/**
* 简化版
* 观察者_监听者设计模式
*/
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("修改完代码后,总经理说,再做几个方案!给我选");
}
}
/** * 简化版 * 观察者_监听者设计模式 */public class Observer { public static void main(String[] args) { R r = new R();//生成事件源 r.setL(new O());//设置监听者 r.onC();//触发的事件 }}/**监听者*/class O implements L