标签:err out 数据 关系 turn 它的 main author 例子
package com.ggr.observer; import java.util.ArrayList; import java.util.List; /** * 事件监听管理规范 * @author GG * 本来我是直接写一个管理器不想用接口的,但是老师说不同的业务场景通知的方式可能不一样,所以我将这个管理器抽象出来 * 就是为了增加它的拓展性和灵活性,这也是面向对象真正的美丽之处吧。 */ public interface Manager{ //管理的事件集合 public List<Observer> list = new ArrayList<>(); //事件添加规范 public void addObserver(Observer o); //事件添加规范 public void removeObserver(Observer o); //通知刷新规范 public void notifyAllSubject(); }
package com.ggr.observer; /** * * @author GG *自定义的事件管理器,它的刷新方式就是全部刷新 */ public class MyManager implements Manager { @Override public void addObserver(Observer e) { list.add(e); } @Override public void removeObserver(Observer e) { list.remove(e); } @Override public void notifyAllSubject() { for (Observer observer : list) { observer.click(); } } }
package com.ggr.observer; /** * * @author GG *定义一个按钮实现点击规范 */ public class MyButton implements Observer{ public String name; public MyButton(String name){ this.name = name; } public void setName(String name) { this.name = name; } public String getName() { return name; } @Override public void click() { System.out.println("按钮"+this.name+"事件触发"); } }
package com.ggr.observer; /** * * @author GG * 定义一个图片按钮,实现了点击事件的规范 * */ public class MyImage implements Observer{ MyImage(String name){ this.name = name; } private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } /** * 点击事件规范的实现 */ @Override public void click() { System.out.println("图片"+this.name+"事件触发"); } }
package com.ggr.observer; /** * 定义被观察者的规范,这里就是点击操作 * @author GG * */ public interface Observer { void click(); }
package com.ggr.observer; /** * * @author GG * 测试 * */ public class TestDao { public static void main(String[] args) { System.out.println("------------------------------------------"); Observer btn= new MyButton("login"); Observer image = new MyImage("my.png"); Manager photo = new MyManager(); photo.addObserver(btn); photo.addObserver(image); photo.notifyAllSubject(); } }
标签:err out 数据 关系 turn 它的 main author 例子
原文地址:http://www.cnblogs.com/ggr0305/p/6591452.html