05 设计模式之--观察者_监听者设计模式

/**
 * 简化版
 * 观察者_监听者设计模式
 */
public class Observer {
	public static void main(String[] args) {
		R r = new R();//生成事件源
		r.setL(new O());//设置监听者
		r.onC();//触发的事件
	}
}

/**监听者*/
class O implements L {
	/**实现监听器方法*/
	public void onL() {
		System.out.println("打印OK");
	}
}
/**需要被监听的类*/
class R {
	/**监听器接口引用*/
	L l;
	
	/**设置监听器*/
	public void setL(L l) {
		this.l = l;
	}
	
	/**事件*/
	public void onC() {
		l.onL();
	}
	
	/**监听器*/
	public interface L {
		public void onL();
	}
}
import java.util.List;  
  
public class Main {  
    /**  
     * @description 测试  
     */  
    public static void main(String[] args) {  
        Programmer pro = new Programmer();//生成一个事件源对象,将要做事情  
        pro.addListener(new PM());//增加监听者  
        pro.addListener(new Director());//增加监听者  
        pro.addListener(new Chief());//增加监听者  
        pro.updateCode();//程序猿去修改代码  
    }  
}  
abstract class ActionEvent{  
      
}  
/**  
 * @description 编程事件  
 *  
 */  
class Code extends ActionEvent{  
    //这个事件的属性是敲打代码、修改代码、处理时间等等...  
    private boolean beat=true;//默认敲代码  
    private boolean update=true;//默认修改代码  
    private long time;  
    public boolean isBeat() {  
        return beat;  
    }  
    public void setBeat(boolean beat) {  
        this.beat = beat;  
    }  
    public boolean isUpdate() {  
        return update;  
    }  
    public void setUpdate(boolean update) {  
        this.update = update;  
    }  
    public long getTime() {  
        return time;  
    }  
    public void setTime(long time) {  
        this.time = time;  
    }  
}  
/**  
 *   
 * @description 程序员要根据编程事件的属性进行操作  
 *  
 */  
class Programmer{  
      
    //程序猿被n个人监听着  
    private List list = new ArrayList();  
    public void addListener(ActionEventListener ael){//程序猿的监听者们,要同意别人监听才行  
        list.add(ael);  
    }  
    ActionEvent e = new Code();      
    //需要修改时,程序猿进行修改操作  
    public void updateCode(){  
        if(((Code) e).isUpdate()){//如果是真,则需要进行修改  
            System.out.println("程序猿修改代码");  
            //监听者们的做法  
            for(int i = 0 ; i < list.size();++i){  
                ActionEventListener a = list.get(i);  
                a.actionPerformed(e);  
            }  
        }  
    }      
}  
interface ActionEventListener{  
    public void actionPerformed(ActionEvent e);  
}  
class PM implements ActionEventListener{  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        System.out.println("修改完代码后,项目经理说,那里还不行,缺个分好;");  
    }  
      
}  
class Director implements ActionEventListener{  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        System.out.println("修改完代码后,运营总监说,你没做出我想要的感觉");  
    }  
}  
class Chief implements ActionEventListener{  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        System.out.println("修改完代码后,总经理说,再做几个方案!给我选");  
    }      
}
简化版看不懂~~看上面的忘记哪个文章是摘的了.

你可能感兴趣的:(观察者设计模式,设计模式,监听者设计模式,java,技巧,设计模式,性能优化)