package cn.hncu.designPattern1;
public class Person {
private String name;
private IPersonRunListener listener1;
private IPersonRunListener listener2;
public Person(String name) {
super();
this.name = name;
}
public void run(){
if(listener1!=null){
listener1.fighting();
}
System.out.println(name+"正在跑...");
if(listener2!=null){
listener2.fighting();
}
}
public void addBefore(IPersonRunListener listener){
this.listener1=listener;
}
public void addAfter(IPersonRunListener listener){
this.listener2=listener;
}
}
interface IPersonRunListener{
public void fighting();
}
package cn.hncu.designPattern1;
public class Demo {
public static void main(String[] args) {
Person person = new Person("张三");
IPersonRunListener listener = new IPersonRunListener() {
@Override
public void fighting() {
//这里可以做很多事,不是只能输出哦
//不过由于还没写Event对象,所以拿不到是谁调用的
System.out.println("先做好准备工作...");
}
};
person.addBefore(listener);
A a = new A();
person.addAfter(a);
person.run();
}
}
class A implements IPersonRunListener{
@Override
public void fighting() {
//这里可以做很多事,不是只能输出哦
//不过由于还没写Event对象,所以拿不到是谁调用的
System.out.println("跑完了,休息休息...");
}
}
package cn.hncu.designPattern2;
public class Person {
private String name;
private IPersonRunListener listener;
public Person(String name) {
super();
this.name = name;
}
public void run(){
System.out.println(name+"开始跑了..");
if(listener!=null){
listener.fighting(new PersonEvent(this));
}
}
public void addPersonListener(IPersonRunListener listener){
this.listener=listener;
}
public String getName(){
return name;
}
@Override
public String toString() {
return "Person [name=" + name + ", listener=" + listener + "]";
}
}
interface IPersonRunListener {
public void fighting(PersonEvent pe);
}
class PersonEvent{
Person p = null;
public PersonEvent(Person p) {
this.p = p;
}
public String getName(){
return p.getName();
}
public Object getSource(){
return p;
}
}
//我们还可以写一个帮我们实现了接口的基本类
//里面写我们通用的模板,如果我们继承这个类,我们就可以不写了。
//有功能不一样的地方,我们就自己写,覆盖这个类的方法
class DefaultCatListener implements IPersonRunListener {
@Override
public void fighting(PersonEvent pe) {
System.out.println("默认的动作...");
}
}
package cn.hncu.designPattern2;
public class Demo {
public static void main(String[] args) {
Person p1 = new Person("张三");
Person p2 = new Person("Jack");
IPersonRunListener listener = new IPersonRunListener() {
@Override
public void fighting(PersonEvent pe) {
System.out.println(pe.getSource()+"已经跑完了...");
if(pe.getName().equals("张三")){
System.out.println(pe.getName()+"跑到了第一名...");
}
}
};
p1.addPersonListener(listener);
p2.addPersonListener(listener);
p1.run();
p2.run();
Person p3 = new Person("李四");
p3.addPersonListener(new DefaultCatListener());
p3.run();
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有