一、概念
观察者模式(有时又被称为模型(Model)-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。
二、痛点
观察者的痛点到底在哪里呢?让我们用购物来做例程,假设某件商品(水果手机)卖得非常火爆,长期处于脱销的状态。由于供不应求,师徒四人也加入了抢购的队伍,不时的去商店询问是否有货,先看商店类代码。
三、购物场景
商店类充当被观察者
1 public class Shop {
2 private String product;//商品
3 //初始商店无货
4 public Shop() {
5 this.product = "无商品";
6 }
7 //商店出货
8 public String getProduct() {
9 return product;
10 }
11 //商店进货
12 public void setProduct(String product) {
13 this.product = product;
14 }
15}
然后是买家类,充当观察者角色。
1 public class Buyer {// 买家
2 private String name;// 买家姓名
3 private Shop shop;// 商店引用
4
5 public Buyer(String name, Shop shop) {
6 this.name = name;
7 this.shop = shop;
8 }
9
10 public void buy() {// 买家购买商品
11 System.out.print(name + "购买:");
12 System.out.println(shop.getProduct());
13 }
14 }
客户端类来模