设计模式(十四):模板模式

模板模式(Template Pattern)

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,即可重定义该算法的某些特定步骤。
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

模板方法模式将主要的方法定义为 final,防止子类修改算法骨架,将子类必须实现的方法定义为 abstract。而普通的方法(无 final 或 abstract 修饰)则称之为钩子(hook)。

关键代码:模板方法在抽象类实现,并加 final 关键词防重写,其他步骤在子类实现。

代码示例

模板抽象类:Template

abstract class Template {
    // 开锁
   abstract unlock();
    // 骑行
   abstract ride();
    // 上锁
   abstract lock();
    // 结算
    abstract pay();
    // 用户使用
    public final use() {
        unlock();
        ride();
        lock();
        pay();
    }
}

具体实现类:

// 扫码开锁的单车
class ScanBicycle extends Template {
    public function unlock() {
        //扫码开锁
    }
}
// 密码开锁的单车
class CodeBicycle extends Template {
    public function unlock() {
        //密码开锁
    }
}

你可能感兴趣的:(设计模式(十四):模板模式)