博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
策略模式和观察者模式
阅读量:7120 次
发布时间:2019-06-28

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

此处主要是对-**-head first 设计模式-**-这一本书的读后感悟

设计模式一:策略模式

  定义:定义了算法簇,分别封装出来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。page/24

  oo原则:封装变化、多用组合,少用继承、针对接口编程,不针对实现编程

  感悟:就是将容易变化的具有相似功能部分代码抽取出来,独立的设计成一个接口或者抽象类或者一个父类,然后将每种变化设计成其子类。在原先的类中只保留抽取出来的接口的一个引用,利用类的多态魔法特性,动态的引用需要的方法。

  要点:

    1)知道oo基础,并不足以设计出良好的oo系统

    2)良好的oo设计必须具备可复用、可扩充、可维护三个特性

    3)大多数的模式都允许系统局部改变独立于其他部分

    4)我们常把系统中会变化的部分抽出来封装

    5)针对接口编程,不针对对象编程

    6)尽量使交互对象之间实现松耦合

 

设计模式二:观察者模式

  定义:在对象之间定义一对多的依赖,当一个对象状态发生改变时,依赖他的对象都会收到通知,并自动更新。

  感悟:要有两个接口,一个是观察者,一个是被观察者。观察者是一对多关系中的多,被观察者使一对多关系中的一,是通知被观察者状态有更新的一方。在被观察者中要存储观察者对象的列表,能够及时添加及删除观察者对象,并能够通知观察者状态更新。观察者要存储自己订阅了哪些被观察者、观察了那些数据,能够将自己注册到被观察者列表中,也能够从被观察者列表中删除,还有一个更新观察数据的方法。

  要点:

    1)观察者模式定义了对象之间的一对多关系

    2)主题(被观察者)用一个共同的接口来更新观察者

    3)观察者和被观察者之间是松耦合,被观察者不知道观察者的细节,只知道观察者实现了观察者的接口。

    4)有多个观察者时不可以依赖特定的通知次序

    

 

转载地址:http://defel.baihongyu.com/

你可能感兴趣的文章
dbcp重连失败问题排查记录(timeout设置)
查看>>
Pay attention: Oracle INTEGER is NUMBER(p) not INT4 in PostgreSQL
查看>>
虚拟机linux系统能够上网但是不能ping主机
查看>>
Http 400 --- The request sent by the client was syntactically incorrect
查看>>
关于char**与const char**
查看>>
nginx内部锁的实现
查看>>
二分查找法
查看>>
硬解码播放器上如何实现截GIF功能?
查看>>
[译] 使用 Kotlin 协程改进应用性能
查看>>
为什么ES6新增了Promise对象来处理异步调用
查看>>
珍惜每一个假期
查看>>
解决循环引用
查看>>
使用harbor和nexus作为docker registry
查看>>
rdc第四天
查看>>
关于 Android studio 在xml中不提示的问题
查看>>
Spring系列之AOP分析开篇(一)
查看>>
关于Android中多module使用fat-aar合并的坑
查看>>
同时兼容iOS、Android、微信小程序的UI引擎
查看>>
KVC的取值赋值
查看>>
Vue2.x+axios+iview+mui带你撸一个App
查看>>