设计模式【笔记】
设计模式【笔记】
设计模式
设计模式历史发展
最早出来的时候是篇博士论文,后出版成了书,不好读,难懂
然后遇到了语言的限制
在后面这段时间中,增加了很多的模式,比如并发模式,架构模式等等
Singlethon优缺点
确保全局至多只有一个对象,主要适用于构造缓慢的对象,需要统一管理的资源
缺点也很明显,很多的全局状态,很难维护,线程的安全性也不好保证
singleton的创建
双重锁模式double checked locking
利用系统自带的能力,比如作为java类的静态变量,但是也有一些缺点,必须要在初始化的时候创建,中途创建可能产生冲突
因此可以使用框架提供的能力
变继承关系为组合关系
继承关系的不好之处
描述了is-a的关系,这个关系是比较不稳定的,能力为重,而不是关系为重
不要用继承关系来实现复用,会有局限性,要使用设计模式来实现代码复用
如果employee升级成了manager,可能就会因为继承的is-a关系而调用不到正确的dowork
state模式优缺点
封装了转换规则,比较方便,同时其枚举可能的状态,不过在枚举状态之前需要确定状态种类,而且将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为
state模式还允许状态转换逻辑与状态对象合成一体,还可以让多个环境对象共享一个状态对象,从而减少系统中对象的个数
但是,state模式的使用必然会增加系统类和对象的个数,而且由于state模式的结构与实现都较为复杂,如果使用不当将导致程序结构和代码的混乱,同时,state模式对"开闭原则"的支持并不太好
decorator模式(装饰模式)
属于结构型模式,说白了就是想增加一个新的功能给现在已经有的对象,但是又不想改变结构的一种方法,顾名思义就是装饰
如何创建对象
使用new来创建对象的缺点
编译时必须决定创建哪一个类的对象
参数意义不明确
解决问题
可以使用abstract factory pattern来解决类的对象的问题
使用builder pattern来解决参数意义不明确的问题
不可变对象往往需要配合builder使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!