欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

20 head first 设计模式(2018第10本书)

程序员文章站 2023-12-24 10:05:45
...

1 策略模式

封闭变化 - 建立 算法族 - 让算法变化独立于用户

举例:

对于一些特立独行的鸭子设计,不变部分采用继承,变化部分采用组合——动作委托给别人处理而不是定义在鸭子内部。

注意我们要换种说法——不再把行为说成一组动作,而是描述成算法。这些算法可以互换的。

企鹅是一个鸭子,企鹅有一些算法。

 

2.Observer 

松耦合-当观察对象改变时,依赖的观察者都收到通知-pull

主题接口-主题实现

观察者接口-观察者实现

 

java.util.Observable类和Observer接口

Oberavable 是类 Oberaveser 是接口  感觉要搞反了;

 其它还有:JButton 的注册-监听

 

3.Decorator 装饰

动态将责任添加到对象,利用继承来保持类型,而使用组合添加行为。

包装类

JDK中的InputStream-ImputStreamFilter-BufferedInputStream 

 利用装饰者,造成程序中有大量小类,当了解装饰的的原理后就能分辨如何组织 的了。

 

4.工厂方法 定义了一个创建对象的接口,由子类决定具体实例化,

产品延迟到子类去实现,使用继承 

 

 

5.抽象工厂  提供一个接口创建相关或依赖对象的家族,而不需要明确指定具体类。

使用对象组合

 

依赖倒置原则 : 依赖抽象 , 工厂帮助我们依赖抽象 编程

 6. 单件模式  确保一个类只有一个实例,并提供全局访问点

单件和全局变量的比较

单件在多线程下的挑战

单件在多线程(同步)方法下的性能改进:懒汉和饿汉

 

7.命令模式 将请求封装成对象,可以让你使用不同的请求,队列 ,或日志,来参数化其它对象。命令模式也可以支持撤消操作。

 

将发出请求的对象和执行请求的对象解耦 。两者之间是通过命令对象沟通的。

命令对象封装了一个或一组操作

调用者通过调用命令对象的Execute发出请求,使接收者的动作被调用

可以使用“聪明”命令对象,即直接实现了请求,而不是委托给接收者。

 

上一篇:

下一篇: