精进设计模式

[toc]

装饰器模式

装饰器模式和代理模式最大的在代码上的区别就是. 被装饰函数一旦被装饰, 那么两者就合二为一了, 就是说如果被装饰函数递归调用自己, 就要变成递归调用这个整体.

模板模式

工厂模式

就是让你可以动态的创建对象, 纯粹是技术上的概念

抽象工厂

将多个工厂绑定在一起, 生产就生产一批产品. 用来提高内聚.

比如生产AK枪和AK子弹的两个工厂绑定在一起, 变成一个AK制造厂, 制造厂的职责就是生成一套完整的枪. 客户不在需要了解怎么配套!

从代码上就是解决了, 多个目标值相同的switch case的出现.

策略模式

结构:

main {
    swich x{
        case A:
            foo1()
        case B:
            foo2()
    }
    公共流程
    switch x{
        case A:
            bar1()
        case B:
            bar2()
    }
}

协作:

context和策略相互作用以选定特定的算法.然后context负责提供算法需要的数据.