边儿上的小人您要嫌碍事儿,可将鼠标放在上头,边上底下有个叉,点一下就收起来了

设计模式【笔记】

设计模式【笔记】

设计模式

设计模式历史发展

最早出来的时候是篇博士论文,后出版成了书,不好读,难懂

然后遇到了语言的限制

在后面这段时间中,增加了很多的模式,比如并发模式,架构模式等等

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使用

posted @   DbWong_0918  阅读(34)  评论(0编辑  收藏  举报
编辑推荐:
· 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框架的用法!
点击右上角即可分享
微信分享提示