本文共 1754 字,大约阅读时间需要 5 分钟。
在软件工程中,观察者模式是一种常见的设计模式,适用于一对多关系的场景。类似于报社与快递员的关系,报社功能模块(类似于被观察者)可以通知所有订阅报纸的客户(观察者),当有新闻发布时需要将新闻内容传达给所有订阅者。
被观察者接口:
interface News { void addReader(Reader reader); void removeReader(Reader reader); void publishNews(String content);}**观察者接口**:```javainterface Reader { void received(String content);}
被观察者实现类:
public class NewsPaper implements News { private ListreaderList = new LinkedList<>(); @Override public void addReader(Reader reader) { readerList.add(reader); } @Override public void removeReader(Reader reader) { if (readerList.contains(reader)) { readerList.remove(reader); } } @Override public void publishNews(String content) { for (Reader reader : readerList) { reader.received(content); } }}
观察者实现类:
public class StudentReader implements Reader { private String name; public StudentReader(String name) { this.name = name; } @Override public void received(String content) { System.out.println("[" + name + "]---->" + content); }}
public static void main(String[] args) { StudentReader studentReader1 = new StudentReader("史珍香1"); StudentReader studentReader2 = new StudentReader("史珍香2"); StudentReader studentReader3 = new StudentReader("史珍香3"); NewsPaper newsPaper = new NewsPaper(); newsPaper.addReader(studentReader1); newsPaper.addReader(studentReader2); newsPaper.addReader(studentReader3); newsPaper.publishNews("二狗子呼叫土豆~");}
[史珍香1]---->二狗子呼叫土豆~[史珍香2]---->二狗子呼叫土豆~[史珍香3]---->二狗子呼叫土豆~
以上设计通过展示观察者模式的核心实现,展示了其在实际项目中的可行性与优势,同时通过代码示例验证了理论的正确性。
转载地址:http://befjz.baihongyu.com/