学习php设计模式php实现模板方法模式
首先,我们打算在操作中定义算法的框架,并将一些步骤延迟到子类中。方法使子类能够在不改变算法结构的情况下重新定义算法的某些特定步骤[GOF95] 2。模板方法模式结构图。
三.模板方法模式中的主要角色抽象类角色:为子类定义了一个或多个要实现的抽象方法。这些抽象方法被称为基本操作,它们是顶层逻辑的组成部分。定义模板方法。这种模板方法一般是具体的方法,给出顶层逻辑的骨架,逻辑组成的步骤在对应的抽象操作中,会被推迟到子类中。同时,顶层逻辑也可以调用具体的实现方法。
ConcrteClass角色:一个或多个实现父类的抽象方法,作为顶层逻辑的组件存在。
每个抽象模板可以有多个与之对应的具体模板,每个具体模板都有自己的抽象方法的实现(即顶层逻辑的组件),这使得顶层逻辑的实现不同。4.模板方法模式1的应用场景。一次实现算法中不变的部分,将可变的行为留给子类实现。2.每个子类中的公共行为应该被提取并集中在一个公共的父类中,以避免代码重复。3.控件子类扩展。5.模板方法模式和其他模式1。策略模式:模板方法使用继承改变部分算法,而策略模式使用委托改变整个算法。区别在于封闭的变化,变化的一部分,变化的另一部分是整体。2.工厂方法模式:工厂方法模式经常被模板方法调用。不及物动词模板方法模式的PHP示例。
?Php/** *抽象模板角色*将抽象方法定义为顶层逻辑的组件,子类implement *将模板方法定义为顶层逻辑的架子。调用基本方法组装顶层逻辑*/抽象类抽象类{/* * *模板方法调用基本方法组装顶层逻辑*/公共函数模板方法(){ echo ' template method begin.br/'; $ this-primitiveoperation 1();$ this-primitive operation 2();echo“TemplateMethod end . br/”;}/* * *基本方法1 */抽象受保护函数原语操作1();/* * *基本方法2 */抽象受保护函数原语操作2();}/* * *具体模板角色*实现父类的抽象方法*/class具体类扩展抽象类{/* * *基本方法1 */受保护函数原语operation 1(){ echo ' primitive operation 1 br/';}/* * *基本方法2 */受保护函数原语操作2 () {echo '原语操作2br/';}}/* * *客户端*/classclient {/* * *主程序。*/public static function main(){ $ class=new concrete class();$ class-TemplateMethod();} } client :3360 main();七、模板方法模式模板方法是代码重用的一项基础技术,模板方法引出了一个反射式的控制结构,它指的是父类调用子类的操作。它的实现过程:准备一个抽象类,以具体方法和具体构造函数的形式实现一些逻辑,然后声明一些抽象方法强制子类实现剩下的逻辑。不同的子类可以用不同的方式实现这些抽象方法,因此对于剩余的逻辑有不同的实现。八.重构的原则重构时要遵循的原则是:将行为向结构的高端移动,将状态尽可能向结构的低端移动。1.一个类应该由行为而不是状态来定义。2.在实现行为中,使用抽象状态代替具体状态。3.分层操作。4.将状态确认推迟到子类。在父类中,如果需要status属性,可以调用抽象值方法,将抽象值方法的实现放入具体子类中。如果能遵守以上规则,就可以在层次结构中将接口与实现、抽象与具体分开,从而保证代码可以最大限度地重用。
以上是用php实现模板方法模式的代码,关于模板方法模式有一些概念上的区别,希望对大家的学习有所帮助。
版权声明:学习php设计模式php实现模板方法模式是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。