您的位置:首页 > 其它

【转】观察者模式

2016-05-11 12:08 477 查看
原文地址: 观察者模式应用场景实例

个人觉得,对设计模式的学习,必须具体到真实的场景,就像这篇文章一样。

技术就是技术,那种“小明小红”什么的看似通俗易懂但需要相当的经验才能体会的解说套路,真不适合初学者。

这篇文章是用 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);
}
}

}
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: