学习了一下设计模式,怕忘记了,写个总结,也好常复习一下。
监听设计模式要包含几个重要的部分:
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("修改完代码后,总经理说,再做几个方案!给我选");
}
}