这本书讲的挺实在的,设计模式的部分又复习了一遍。另外又学了几个Python3的新decorator。
创建型设计模式
抽象工厂 (Abstract Factory)
- 名字就用AbstractFactory好了,不要起什么BaseFactory之类的
- 相关类都放到对应的Factory Class里面,不要暴露给外面了
建造者模式 (Build)
- 和工厂的区别就是保存了创建对象时各个部分的细节
工厂模式
- 根据情况实例化对象
- 还是注意和抽象工厂的区别,抽象工厂是将创建对象的行为抽象出来,而工厂模式则是根据要创建的对象类型实例化
原型模式 (Prototype)
- 这个模式其实在javascript的根本,不过Python的实现方法还真是五花八门,我说直接用copy就好了嘛
单例模式 (Singleton)
- 我最中意的一种实现:
| 1 2 3 4 5 6 7 8 9 10 11 |  | 
结构型设计
- 作用就是改装对象,或者把小对象合并为大对象
Adapter
- 其实就是转接方法
Bridge
- 把方法抽象出来
Composite
- Python里面有一种省一点内存的写法,可以直接用CompositeItem和Item两个类来实现,不过我觉得不直观
decorator
- 
    几个新的decorator: - 
        @functools_wraps: 装饰器工厂
- 
        @statically_typed: 类型检查
 
- 
        
- 
    另外 @ensure类修饰符可以用来简化设置property的代码
Facade
- 这个模式其实是天天在做的,就是把接口聚合的好看一点
- 其实思想可以推广到很多方面,比如Docker,就是LXC的一个Facader,而且做的比较好看,于是大家就都来用了
Flyweight
- 管理许多小对象的时候用引用
- Python用__slot__Attribute来做最方便
- 里面关于用shelve对象存储class attribute的思路挺实用的