原文地址:
观察者模式应用场景实例
个人觉得,对设计模式的学习,必须具体到真实的场景,就像这篇文章一样。
技术就是技术,那种“小明小红”什么的看似通俗易懂但需要相当的经验才能体会的解说套路,真不适合初学者。
这篇文章是用 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);
}
}
}
分享到:
相关推荐
java观察者模式观察者模式java观察者模式观察者模式java观察者模式观察者模式
Qt设计模式之观察者模式
观察者模式及实例,适合初学者阅读 。。。。。。。。。。。。。。。
采用Java语言编写的一个观察者模式实例。观察者模式(有时又被称为模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,...
Java 观察者模式的浅析 简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者...
观察者模式demo 观察者模式demo 观察者模式demo 观察者模式demo
java 设计模式 观察者模式 简单实例 包括测试test类
运用观察者模式及MVC模式的整合,是javaWeb的简单的实现了选民投票
观察者模式Demo,设计模式,观察者模式
iOS 设计模式 观察者模式
js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子js观察者模式列子
观察者模式使用
设计模式之观察者模式Java版本实现和UML类设计图
观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子是java内置观察者模式
观察者模式最好的诠释 模式编程中的观察者模式delphi代码
观察者模式 c++ 工程角度实现
观察者模式小型框架
观察者模式
设计模式--观察者模式java例子
一个类实现Android观察者模式(最简单实用的观察者模式)