public class ObserverDemo { public static void main(String[] args) { FanObserver zhangsan = new FanObserver("张三"); FanObserver lisi = new FanObserver("李四"); OfficialSubject officialSubject = new OfficialSubject(); officialSubject.add(zhangsan); officialSubject.add(lisi); officialSubject.notifyState("发布文章"); officialSubject.notifyState("删除文章"); } } interface Subject{ void add(Observer observer); void remove(Observer observer); } class OfficialSubject implements Subject{ private List<Observer> observerList = new ArrayList<>(); @Override public void add(Observer observer) { observerList.add(observer); } @Override public void remove(Observer observer) { observerList.remove(observer); } public void notifyState(String state){ if (state.equals("发布文章")){ observerList.forEach(Observer::publish); }else if(state.equals("删除文章")){ observerList.forEach(Observer::delete); } } } interface Observer{ void publish(); void delete(); } class FanObserver implements Observer{ private final String name; public FanObserver(String name) { this.name = name; } @Override public void publish() { System.out.printf("%s可以阅读文章%n",name); } @Override public void delete() { System.out.printf("%s不可以阅读文章%n",name); } }