模板方法模式是类的行为模式。模板方法的用意是:将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。
模板方法中涉及到的角色:
一、 抽象模板角色
1. 定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤;
2. 定义并实现一个模板方法。
二、 具体模板角色
1. 实现父类定义的一个或多个抽象方法它们是一个顶级逻辑的组成步骤
2. 每一个抽象模板角色都可以有任意多个具体模板角色与之对应。
“好莱坞原则”:
想要进军好莱坞,建立提交之后,所能做的就是等待,这些公司会说“不要给我们打电话,我们会打给你”,这个就是好莱坞原则。它的关键之处在于娱乐公司对这个事情的完全控制权。
“好莱坞原则”在模板方法模式中的体现是:子类可以替换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑。
模板方法模式中的方法:
一、模板方法
一个模板方法是定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。
二、基本方法
1. 抽象方法:一个抽象方法由抽象类声明,由具体子类实现
2. 具体方法:一个具体方法由抽象类声明并实现,而子类并不实现或替换
3. 钩子方法:一个钩子方法由抽象类声明并实现,而子类会加以扩展。