设计模式【笔记】

设计模式【笔记】

设计模式

设计模式历史发展

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

然后遇到了语言的限制

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

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

感谢观看,文笔有限,博客不出彩,还请多多见谅
原文地址:https://www.cnblogs.com/jokingremarks/p/14474091.html