分类: C/C++
2012-03-25 19:15:14
你是房地产商,买了一块地,现在找一些二级承包商来帮你建房子。为了防止倒楼事故,你严格要求承包商要按规定流程建房子,地基、扑砖、铺房顶、安门窗。缺一不可。
你可以用一个抽象类来控制这个流程:
所有的承包商必须继承这个类,并实现所有的纯虚函数。如此一来,你就可以严格控制流程。
有些流程是必需的,但有些流程是可选的。比如你有的房子建好后可以装修,有的也可以不装修。这时你可以:
上面的Decorate就是一个可选的流程,子类可以覆写它,也可以不管它。这样的函数称为Hook。
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
好莱坞原则:别调用(打电话给)我们,我们会调用(打电话给)你。
好莱坞原则和依赖倒置原则的关系:依赖倒置原则倾向于尽量避免具体类,而多使用抽象;好莱坞原则是避免底层结构依赖于高层结构。
模板方法模式与策略模式的比较:模板方法模式需要定制的内容是一个完整算法的一部分;而策略模式里每一个定制的内容都是一个完整的算法。