设计模式笔记—分类

此文无法教会你设计模式,而是在你已经学会设计模式的基础上,提供一种看待设计模式的角度。

与多态有关的

工厂方法(factory method):不同的子类通过同一函数返回不同类型的实例(工厂方法所在类中的大部分函数与工厂逻辑无关)
模板方法(template method):不同的子类对同一函数有不同的实现

与多态有关,但是以聚合/组合替代继承

抽象工厂(abstrac method):利用工厂类不同子类的实例,获取不同类型的实例(整个类中的所有函数都是工厂方法)
策略(strategy):利用策略类的不同子类的实例,对同一函数达到不同的实现
状态(state):与策略模式的区别是:状态类的不同子类之间有配合关系,共同完成一个大的任务,而策略类的不同子类之间没有配合关系,各自完成一个小的任务

桥接(bridge)和装饰(decorator)也是以聚合/组合替代继承,但是他们被划分到下面的类中。

防止代码排列组合

生成器(builder):防止构造函数的参数排列组合,导致构造函数激增
中介者(Mediator):防止组件两两握手,导致用于组件相互沟通的函数激增
桥接(bridge):防止继承基类的角度排列组合,导致子类激增。
装饰(decorator):防止需求排列组合,导致子类激增。利用有相同基类的其他子类,动态的为自己添加更多的行为
访问者(visitor):防止数据类型与操作类型排列组合,导致操作函数激增

简化/统一接口

适配器(adapter):将客户端无法使用的接口转换为客户端可以使用的接口
外观(facade):将客户端不关心的接口隐藏,只提供客户端关心的接口
代理(proxy):控制客户端可以使用哪些接口。顺带有一点装饰功能,和外观模式的不同是:代理类与被代理类实现同一接口,并可互换
迭代器(iterator):不管你用啥数据结构,都要能被遍历
责任链(chain of res):多个串联需要同时满足条件,或者多个并联只需满足一个条件,通过链表和递归将这串联和并联的条件判断简化成一个接口
组合(composite):树状数据结构,每个节点对外提供相同的接口

重复利用

单例(singleton):全局只有一个实例,供所有对象引用,重复利用内存
亨元(flyweight):又叫缓存模式,重复利用内存
原型(prototype):又叫克隆模式,重复利用变量的值

其他

观察者(observer):有多个类的实例想向客户端要一个时机
命令(command):将函数包装成对象,升级为一等公民,可存储待以后使用,可在未使用前删除,可当做参数传递,可当做函数返回值
备忘录(memento):用一个栈记录状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值