【转】观察者模式
2016-05-11 12:08
477 查看
原文地址: 观察者模式应用场景实例
个人觉得,对设计模式的学习,必须具体到真实的场景,就像这篇文章一样。
技术就是技术,那种“小明小红”什么的看似通俗易懂但需要相当的经验才能体会的解说套路,真不适合初学者。
这篇文章是用 php 写的,把它翻译成 Java ,代码大致如下:
购票核心业务(被观察者):
外围服务(观察者):
Main :
个人觉得,对设计模式的学习,必须具体到真实的场景,就像这篇文章一样。
技术就是技术,那种“小明小红”什么的看似通俗易懂但需要相当的经验才能体会的解说套路,真不适合初学者。
这篇文章是用 php 写的,把它翻译成 Java ,代码大致如下:
购票核心业务(被观察者):
public class TicketService extends Observable {
public void buyTicket(int i) {
String ticket = "ticket_" + i;
// 通知全部观察者
setChanged();
notifyObservers(ticket);
}
private static final TicketService instance = new TicketService();
private TicketService() {
}
public static TicketService getInstance() {
return instance;
}
@Override
public String toString() {
return "TicketService";
}
}
外围服务(观察者):
public class Sms implements Observer {
// 购票核心逻辑执行完毕后,会通知所有的观察者。本方法为观察者得到通知后执行的业务逻辑,此例为发送短信。
@Override
public void update(Observable o, Object arg) {
System.out.println(o + ": " + arg);
System.out.println("****** Sending sms. ******");
}
public void register() {
TicketService.getInstance().addObserver(this);
}
private static final Sms instance = new Sms();
private Sms() {
}
public static Sms getInstance() {
return instance;
}
}
Main :
阅读更多
public class Main {
public static void main(String[] args) {
TicketService ticketService = TicketService.getInstance();
Log log = Log.getInstance();
Sms sms = Sms.getInstance();
log.register();
sms.register();
for (int i = 0; i < 3; i++) {
ticketService.buyTicket(i);
}
}
}
相关文章推荐
- 设计模式之禅——(观察者模式)
- 编程模式之观察者模式(Observer)
- 学学设计模式-观察者模式(Observer)
- c++ 设计模式5 (Observer / Event 观察者模式)
- 设计模式之观察者模式
- iOS设计模式(01):观察者
- 第21章 行为型模式—观察者模式
- 11种行为型模式之:观察者模式 (Observer)
- 设计模式之观察者模式
- 设计模式(四)——观察者设计模式
- 设计模式-观察者模式
- PHP 观察者模式的实现代码
- 观察者模式示例
- 设计模式之观察者模式
- 《Head First 设计模式》例子的C++实现(2 观察者模式)
- 设计模式——单例模式、工厂模式、代理模式、观察者模式、装饰器模式
- 最简单的观察者模式--转载
- Java设计模式之观察者模式
- [Android进阶]Android中使用的观察者模式
- 观察者模式(Observer)