1.声明一个接口
//观察者 public interface Observer { void receive(String message); }
2.实现类
//粉丝观察者 public class FansObserver implements Observer{ private String name; public FansObserver(String name) { this.name = name; } //接受消息 @Override public void receive(String message) { System.out.println(name+"收到消息:"+message); } }
3.up主
//up主 public class Uploader { /** * 粉丝列表(观察者列表) */ private List<Observer> observers=new ArrayList<>(); private String message; /** * 关注observer */ public void addObservers(Observer observer){ observers.add(observer); } //取关observer public void removeObservers(Observer observer){ observers.remove(observer); } //发布作品message public void sendMessage(String message){ this.message = message; notifyObserver(); } //通知粉丝 private void notifyObserver(){ for(Observer observer:observers){ observer.receive(message); } } }
4.测试
@Test public void test01 { Uploader uploader = new Uploader(); FansObserver fansObserver1= new FansObserver("光头强"); FansObserver fansObserver2= new FansObserver("熊大"); FansObserver fansObserver3= new FansObserver("熊二"); uploader.addObservers(fansObserver1); uploader.addObservers(fansObserver2); uploader.addObservers(fansObserver3); uploader.sendMessage("你太漂亮了"); }
@Test public void test02 { Uploader uploader = new Uploader(); FansObserver fansObserver1= new FansObserver("光头强"); FansObserver fansObserver2= new FansObserver("熊大"); FansObserver fansObserver3= new FansObserver("熊二"); uploader.addObservers(fansObserver1); uploader.addObservers(fansObserver2); uploader.addObservers(fansObserver3); uploader.sendMessage("你太漂亮了"); System.out.println("=======熊二被取关后=========="); uploader.removeObservers(fansObserver3); uploader.sendMessage("观察者模式"); }