php,java实现模板方法模式

来源:互联网 发布:单片机大学生毕业设计 编辑:程序博客网 时间:2024/04/30 06:53

场景:当有很多种类的操作时,并且每种操作都有h很多小的步骤,但是他们的总体算法逻辑相同,这种情况适合模板方法模式

类图
这里写图片描述

java实现
模板方法抽象类

public abstract class AbstractModule {    public final void moduleFanction(){        step1();        step2();    }    protected abstract void step1();    protected abstract void step2();}
ublic class Module1 extends AbstractModule {    @Override    protected void step1() {    }    @Override    protected void step2() {    }}
public class Module2 extends AbstractModule {    @Override    protected void step1() {    }    @Override    protected void step2() {    }}

php实现

abstract class AbstractModule{    public final function moduleFunction()    {        $this->step1();        $this->step2();    }    protected abstract function step1();    protected abstract function step2();}class Module1 extends AbstractModule{    protected function step1()    {        echo 'module1 step1';    }    protected function step2()    {        echo 'module1 step2';    }}class Module2 extends AbstractModule{    protected function step1()    {        echo 'module2 step1';    }    protected function step2()    {        echo 'module2 step2';    }}$module1 = new module1;$module1->moduleFunction();$module2 = new Module2;$module2->moduleFunction();

扩展:当有需求是step1一定执行,但是step2,在一定条件下才执行,就要设置钩子方法来控制step2的执行

public abstract class AbstractModule {    public final void moduleFanction(){        step1();        if(isHook()){            step2();        }    }    protected abstract void step1();    protected abstract void step2();    protected boolean isHook(){        return true;    }}

然后子类根据具体额业务逻辑重写isHook方法来控制父类的step2的执行

0 0
原创粉丝点击