23中设计模式-行为型1-观察者模式
2016-05-30 22:39
573 查看
Theme.java
public interface Theme { abstract void addObserver(Observer observer); abstract void removeObserver(Observer observer); abstract void service(String notice); }
ConcreteTheme.java
public class ConcreteTheme implements Theme { private List<Observer> observer=Collections.synchronizedList(new ArrayList<Observer>()); @Override public void addObserver(Observer observer) { this.observer.add(observer); } @Override public void removeObserver(Observer observer) { this.observer.remove(observer); } private void notice(String notice) { if(this.observer.size()!=0){ for(Observer o : this.observer){ o.update_before(notice); System.out.println(notice); o.update_back(notice); } }else{ System.out.println(notice); } } @Override public void service(String notice) { notice(notice); } }
Observer.java
public interface Observer { abstract void update_before(String notice); abstract void update_back(String notice); }
ConcreteObserver.java
public class ConcreteObserver implements Observer { @Override public void update_before(String notice) { // TODO Auto-generated method stub } @Override public void update_back(String notice) { // TODO Auto-generated method stub } }
DemoTest.java
public class DemoTest { @Test public void test1(){ Theme theme=new ConcreteTheme(); theme.addObserver(new Observer(){ @Override public void update_before(String notice) { System.out.println("监听前1"); } @Override public void update_back(String notice) { System.out.println("监听后1"); } }); theme.service("Hello"); } }
相关文章推荐
- 【Java学习笔记】多线程
- Openstack Neutron学习手册(by qiqishuang csdn)
- Easy-题目61:6. ZigZag Conversion
- android studio 导入第三方开源框架/项目,第三方Jar包
- 《图解TCP/IP》读书笔记(3)
- 2.4.位运算实战演练1
- XHTML
- 最新方法制作自己的cocoapods开源框架的详细步骤
- 友盟分享中分享到微信只有文字信息没有要跳转的链接
- java中读取输入的方式
- 设计模式学习笔记之综述
- String、StringBuffer和StringBuilder的区别
- 思考--测试应该从代码中读懂什么
- CSS3实现可伸缩输入框
- 设计模式23篇:迭代器模式
- MySQL 加锁处理分析
- LLBL Gen Pro 5.0
- java-Netty学习(2)
- WIN7X64 安装Wampserver 2.5 启动提示“丢失MSVCR110.dll”
- iOS中NSAttributedString用法