学习PHP设计模式php实现模板方法模式
1。意图Define the skeleton of an algorithm in an operation, and delay some of the steps into the subclass.Template Method allows subclasses to redefine certain steps of the algorithm without changing the structure of an algorithm {GOF95}
两。模板法的模式结构图
三。模板方法模式中的主要角色
摘要模板(AbstractClass)角色:定义一个或多个抽象方法允许子类来实现这些抽象方法叫做基本操作,它们是顶层逻辑部分。
定义一个模板方法。这个模板方法通常是一个特定的方法。它给出了顶层逻辑的骨架,以及相应抽象操作中逻辑组合的步骤,这些操作将被推迟到子类中,同时顶层逻辑也可以调用特定的实现方法。
特定的模板(concrteclass)作用:实现一个或多个父类的抽象方法,作为顶级逻辑的组成。
每个抽象模板可以有对应于每个模板的多个具体模板,每个模板都有自己的抽象实现方法,即顶层逻辑的组件,因此顶层逻辑的实现是不同的。
四。模板方法模式应用场景
1,算法的不变部分在同一时间实现,变量行为留给子类。
2。每个子类中的公共行为应该被提取并集中在一个公共父类中,以避免代码重复。
三.控制子类扩展。
五、模板模式和其他模式
1,策略模式(策略模式):模板方法使用继承来改变算法的部分,策略模式使用委托来改变整个算法,不同之处在于闭包的变化、变化的部分和整个变化的不同。
2。工厂方法模式(工厂方法模式)的工厂方法模式通常被模板方法调用。
六、模板方法模式php示例
< PHP
*抽象模板角色
*将抽象方法定义为顶层逻辑子类实现的一部分
*模板方法被定义为顶层逻辑的架子,并且调用基本方法来组装顶层逻辑。
* /
抽象类{
*模板方法调用组装顶层逻辑的基本方法
* /
公共功能材料(){
echo'templatemethod开始。;
美元-> primitiveoperation1();
美元-> primitiveoperation2();
echo'templatemethod结束。;
}
*基本方法1
* /
摘要保护功能primitiveoperation1();
*基本方法2
* /
摘要保护功能primitiveoperation2();
}
*特定模板角色
*父类抽象方法的实现
* /
类的具体子类扩展抽象类{
*基本方法1
* /
保护功能primitiveoperation1(){
echo'primitiveoperation1;
}
*基本方法2
* /
保护功能primitiveoperation2(){
echo'primitiveoperation2;
}
}
*客户端
* /
客户端类{
*主程序。
* /
公共静态函数main(){
美元类=新ConcreteClass();
美元类->模板法();
}
}
客户::主();
>
七、模板方法模式
模板方法是代码重用的基本技术,它导致了一种反射控制结构,即父类调用子类的操作。
实施过程是准备一个抽象类,并以特定的方式和特定的构造函数实现一些逻辑,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。
八,重建原则
应该遵循的重构原则是将行为移动到结构的顶部,并尽可能地将状态移动到结构的下端。
1,一个类应该由行为而不是状态来定义。
2。在实现行为时,它是抽象状态而不是具体状态。
三.业务分工。
4。在父类中,如果需要状态属性,可以调用抽象值方法,并将抽象值方法的实现放入特定子类中。
如果我们能遵守上面的规则,我们就可以将接口与实现分为层次结构、分离抽象和具体,并确保代码可以重用。
以上是使用php实现模板方法的模式代码,有一些模板方法和模式之间的概念差异,希望能帮助大家学习。