模版方法模式(Template Method)

2018-11-19  本文已影响7人  fomin

1、概念

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

图片
2、模式结构

3、使用场景

4、优缺点

优点:

缺点:

5、实例

首先定义开门的的抽象类,openDoor为开门的公用方法,但开锁有多种方式,setNeedUnLock为钩子方法,可由子类控制是否需要开锁

public abstract class AbsUnlock {
    private boolean isNeedUnlock = true;

    protected abstract void unlockAction();

    public void setNeedUnlock(boolean needUnlock) {
        isNeedUnlock = needUnlock;
    }

    public final void openDoor() {
        if (isNeedUnlock) {
            unlockAction();
        }
        // 其它处理逻辑
    }
}

磁卡开锁类

public class CardUnlock extends AbsUnlock {

    @Override
    protected void unlockAction() {
        // 磁卡开锁逻辑
    }
}

密码开锁类

public class PasswordUnlock extends AbsUnlock {

    @Override
    protected void unlockAction() {
        // 密码开锁逻辑
    }
}

客户端调用

public static void main(String[] args) {
    CardUnlock card = new CardUnlock();
    card.openDoor();

    PasswordUnlock pwd = new PasswordUnlock();
    pwd.openDoor();
}
上一篇 下一篇

猜你喜欢

热点阅读