学习了一下设计模式,怕忘记了,写个总结,也好常复习一下。
监听设计模式要包含几个重要的部分:
1、事件
2、事件源
3、响应事件的监听者
就拿下面的图片来解释一下
如图所示的,后面站着的肯定是监听者了,监听着敲代码这个事件,而程序猿就是那个敲代码的事件源
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("修改完代码后,总经理说,再做几个方案!给我选"); } }