设计模式--观察者(监听)设计模式

学习了一下设计模式,怕忘记了,写个总结,也好常复习一下。

监听设计模式要包含几个重要的部分:

1、事件

2、事件源

3、响应事件的监听者

就拿下面的图片来解释一下



如图所示的,后面站着的肯定是监听者了,监听着敲代码这个事件,而程序猿就是那个敲代码的事件源

建一个工程


import java.util.ArrayList;  
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<ActionEventListener> list = new ArrayList<ActionEventListener>();  
    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("修改完代码后,总经理说,再做几个方案!给我选");  
    }      
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值