-
Notifications
You must be signed in to change notification settings - Fork 0
design_patten_2
Xiaolin Zhang edited this page Nov 2, 2019
·
1 revision
[toc]
装饰器模式和代理模式最大的在代码上的区别就是. 被装饰函数一旦被装饰, 那么两者就合二为一了, 就是说如果被装饰函数递归调用自己, 就要变成递归调用这个整体.
就是让你可以动态的创建对象, 纯粹是技术上的概念
将多个工厂绑定在一起, 生产就生产一批产品. 用来提高内聚.
比如生产AK枪和AK子弹的两个工厂绑定在一起, 变成一个AK制造厂, 制造厂的职责就是生成一套完整的枪. 客户不在需要了解怎么配套!
从代码上就是解决了, 多个目标值相同的switch case
的出现.
结构:
- 策略
- 具体策略
- context
main {
swich x{
case A:
foo1()
case B:
foo2()
}
公共流程
switch x{
case A:
bar1()
case B:
bar2()
}
}
协作:
context和策略相互作用以选定特定的算法.然后context负责提供算法需要的数据.
- 客户会把具体策略传递给context. 然后只与context进行交互
- 客户讲一些参数传给context, 然后由context来选择调用什么样子的策略
- 甚至和抽象工厂模式结合在一起, 一个context提供多个策略