1、Abstract Factory与Builder都是通过传入一个构造对象为client创建一个产品,但它们的区别在于:Abstract Factory中,client定义一个构造的框架,通过传入不同的Factory对象来创建不同的产品;而Builder模式中,Builder只负责创建一系列组件,但诸如产品的组件的复杂度或个数等特性,由client决定,即:client有多个用于构造产品的框架(接口),可以通过传入相同的Builder对象,来创建不同的产品。
2、采用固定框架或算法的模式还有Template Method,与Abstract Factory的区别是:Template Method定义一个算法框架接口,其中可能调用到的某些具体实现会延迟到子类中实现,没有传参的过程。Template Method是位于“隐藏”与“多态”之间的一种中间的复用手段:它允许子类不完全或修改一部分的继承父类的某个接口。
3、Command模式完全是一个回调函数的替代品。我们甚至都不要去实现那个execute接口,而改为重载()操作符,让它看起来就是一个回调函数。但好处是一个Command对象是有状态的,也可以根据这个状态延伸做出回溯的操作。
4、State模式如此的重要,都不用多说。任何OOAD得到的设计,必然会得到一系列的具有不同状态的类,State模式负责这些类在不同状态间的原子转换,只是需要注意的是:类的某些状态间的区别,仅仅是几个属性的差别,这时引入枚举或Strategy模式可以减少继承深度所带来的风险。
5、Factory Method去除那些让人看起来不太爽switch和dynamic_cast效果不错。谁的事谁自己知道,client只关注必需的信息,交互的对象是谁不是最重要的。