策略模式和观察者模式
此处主要是对-**-head first 设计模式-**-这一本书的读后感悟
设计模式一:策略模式
定义:定义了算法簇,分别封装出来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。page/24
oo原则:封装变化、多用组合,少用继承、针对接口编程,不针对实现编程
感悟:就是将容易变化的具有相似功能部分代码抽取出来,独立的设计成一个接口或者抽象类或者一个父类,然后将每种变化设计成其子类。在原先的类中只保留抽取出来的接口的一个引用,利用类的多态魔法特性,动态的引用需要的方法。
要点:
1)知道oo基础,并不足以设计出良好的oo系统
2)良好的oo设计必须具备可复用、可扩充、可维护三个特性
3)大多数的模式都允许系统局部改变独立于其他部分
4)我们常把系统中会变化的部分抽出来封装
5)针对接口编程,不针对对象编程
6)尽量使交互对象之间实现松耦合
设计模式二:观察者模式
定义:在对象之间定义一对多的依赖,当一个对象状态发生改变时,依赖他的对象都会收到通知,并自动更新。
感悟:要有两个接口,一个是观察者,一个是被观察者。观察者是一对多关系中的多,被观察者使一对多关系中的一,是通知被观察者状态有更新的一方。在被观察者中要存储观察者对象的列表,能够及时添加及删除观察者对象,并能够通知观察者状态更新。观察者要存储自己订阅了哪些被观察者、观察了那些数据,能够将自己注册到被观察者列表中,也能够从被观察者列表中删除,还有一个更新观察数据的方法。
要点:
1)观察者模式定义了对象之间的一对多关系
2)主题(被观察者)用一个共同的接口来更新观察者
3)观察者和被观察者之间是松耦合,被观察者不知道观察者的细节,只知道观察者实现了观察者的接口。
4)有多个观察者时不可以依赖特定的通知次序
如果觉得有用,想赞助一下请移步赞助页面:赞助一下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)