三个接口,一个被观察者,三个观察者,一个场景类
故事部分虚构
三个接口:
1.Observer.java(观察者接口)
2.Observerable.java(被观察者接口)
3.IHanFeiZi.java(韩非子的接口)
一个被观察者:
1.HanFeiZi.java(实现Observerable.java和IHanFeiZi.java两个接口)
三个观察者,都实现Observer.java接口:
1.LiSi.java(李斯)
2.DiaoSi.java(屌丝)
3.HanFeiZiWife.java(韩非子的妻子)
一个场景类:
1.Client.java
三个接口的代码如下:
Observer.java
public interface Observer { public void update(String context); }
Observerable.java
public interface Observerable { public void addObserver(Observer observer); public void deleteObserver(Observer observer); public void notifyObservers(String context); }
IHanFeiZi.java
public interface IHanFeiZi { public void haveBreakfast(); public void haveFun(); }
被观察者代码如下:
HanFeiZi.java
import java.util.ArrayList; public class HanFeiZi implements IHanFeiZi, Observerable{ private ArrayList<Observer> observerList = new ArrayList<Observer>(); @Override public void haveBreakfast() { System.out.println("韩非子:正在吃饭"); notifyObservers("韩非子正在吃饭"); } @Override public void haveFun() { System.out.println("韩非子:正在娱乐"); notifyObservers("韩非子正在娱乐"); } @Override public void addObserver(Observer observer) { observerList.add(observer); } @Override public void deleteObserver(Observer observer) { observerList.remove(observer); } @Override public void notifyObservers(String context) { for(Observer observer : observerList){ observer.update(context); } } }
三个观察者代码如下:
LiSi.java
public class LiSi implements Observer{ @Override public void update(String context) { System.out.println("李斯:发现韩非子有活动"); reportToQinShiHuang(context); System.out.println("报告完毕"); } private void reportToQinShiHuang(String context) { System.out.println("李斯:报告老大,发现韩非子有活动" + "<--->" + context); } }
DiaoSi.java
public class DiaoSi implements Observer{ @Override public void update(String context) { System.out.println("屌丝:发现韩非子有活动" + "<--->" + context); System.out.println("屌丝非常伤心"); } }
HanFeiZiWife.java
public class HanFeiZiWife implements Observer{ @Override public void update(String context) { System.out.println("韩非子妻子:这死鬼竟然在吃喝玩乐"); } }
场景类代码如下:
Client.java
public class Client { public static void main(String[] args) { HanFeiZi hanFeiZi = new HanFeiZi(); LiSi liSi = new LiSi(); DiaoSi diaoSi = new DiaoSi(); HanFeiZiWife hanFeiZiWife = new HanFeiZiWife(); hanFeiZi.addObserver(liSi); hanFeiZi.addObserver(diaoSi); hanFeiZi.addObserver(hanFeiZiWife); hanFeiZi.haveBreakfast(); hanFeiZi.haveFun(); } }