博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 之 观察者模式(大话设计模式)
阅读量:6204 次
发布时间:2019-06-21

本文共 1415 字,大约阅读时间需要 4 分钟。

观察者模式,笔者以前做校验订单时用过一次,只是不知道有这个模式,当时使用观察者省略了N多if else

在笔者看来观察者模式比较试用于一个对象状态改变后,很多个对象也要根据这个状态做相应的动作,当然观察者模式只是给大家开了一扇门,更希望的是灵活运用,而不是拘泥于细节,

我们可以从中汲取到把实现相同接口的类来放到集合里,然后便利集合调取公共方法去完成相应的工作,先看下类图

大话设计模式-类图

基于类图笔者写了如下的简单的实例。

/** * 通知者抽象接口 */public interface INotify {    public void notifySub();    public void addSub(ISubject subject);    public void removeSub(ISubject subject);}
/** * 观察者抽象接口 */public interface ISubject {    public void updateState(String state);}
/** * 具体通知者 */public class Notify implements INotify {    private List
subjects = new ArrayList<>(); @Override public void addSub(ISubject subject) { subjects.add(subject); } @Override public void removeSub(ISubject subject) { subjects.remove(subject); } @Override public void notifySub() { for (ISubject subject : subjects) { subject.updateState("下订单了"); } }}
/** * 具体观察者 */public class Subject implements ISubject {    @Override    public void updateState(String state) {        System.out.println(state);    }}
/** * 客户端 */public class Test {    public static void main(String[] args) {        INotify notify = new Notify();        notify.addSub(new Subject());        notify.notifySub();    }}

 

运行结果:

下订单了

 

设计模式,能够优化我们的代码,解耦,易扩展,易维护,不过如果不能够理解设计模式的精髓所在,生搬硬套可能收不到理想的效果。

笔者认为,吸取设计模式的思想才是学习的关键。以上是笔者对观察者的理解,希望能帮助学习的小伙伴!

转载于:https://www.cnblogs.com/zhuxiansheng/p/7988020.html

你可能感兴趣的文章
ueditor富文本编辑器使用百度地图自定义动态地图组件及兼容https及http协议
查看>>
charles抓包unknow
查看>>
Win7无法安装程序提示Installer integrity check has failed的解决方法
查看>>
Matcher类详解
查看>>
转:Linux内部的时钟处理机制全面剖析
查看>>
solr4.7中文分词器(ik-analyzer)配置
查看>>
截图上传功能 imageAreaselect
查看>>
notepad++ 中配置 python一键运行
查看>>
Shiro之与SpringMVC集成
查看>>
Android应用被强制停止后无法接受广播解决方案
查看>>
mysql (已解决)Access denied for user 'root'@'localhost' (using password: NO)
查看>>
面试随笔2
查看>>
CSS - 修改input - placeholder 和 readonly 的样式
查看>>
Revel运行APP出现的路径问题
查看>>
VSCODE C/C++配置
查看>>
POJ 2188线段树求逆序对
查看>>
android studio :cannot resolve symbol R
查看>>
vi 整行 多行 复制与粘贴
查看>>
Window_Bat_Scripts—检测特定网段未使用的IP地址
查看>>
深入理解计算机系统(第三版) csapp 第三章部分答案
查看>>