设计方式笔记之三 观察者模式
设计模式笔记之三 观察者模式
import java.util.hashmap;import java.util.map;/** * 主题类,被观察者对象 * */public class subject { private map<observer, observer> mapobserver = new hashmap<observer, observer>(); /** * 注册方法,表示订阅 * @param observer */ public void register(observer observer) { mapobserver.put(observer, observer); } /** * 取消订阅 * @param observer */ public void unregister(observer observer) { mapobserver.remove(observer); } /** * 通知所有观察者 */ public void notifyallobserver() { for (map.entry<observer, observer> entry : mapobserver.entryset()) { entry.getvalue().update(); } }}/** * 观察者接口 */public interface observer { public void update();}/** * 观察者1 */public class concreteobserver1 implements observer { @override public void update() { system.out.println("concreteobserver1 update..."); } }/** * 观察者2 */public class concreteobserver2 implements observer { @override public void update() { system.out.println("concreteobserver2 update..."); } }/** * 观察者模式的使用 */public class testobserver { /** * @param args */ public static void main(string[] args) { subject subject = new subject(); observer observer1 = new concreteobserver1(); observer observer2 = new concreteobserver2(); subject.register(observer1); subject.register(observer2); subject.notifyallobserver(); }}