模版方法设计模式
程序员文章站
2022-07-14 09:03:44
...
定义:定义一个操作中某种算法的框架,而将一些步骤延迟到子类中。模版方法模式使得子类在不改变一个算法结构的前提下,对某些步骤实现个性化定义。
一个父类:(两类方法)模版方法与步骤方法
模版方法:即实现某种算法的方法步骤,而这些步骤都是调用步骤方法完成的。
步骤方法:即完成模版方法的每个阶段的方法。每个步骤方法完成某一特定的、完成总算法的一部分功能。
有三种类型:抽象方法、最终方法与钩子方法。
抽象方法:子类个性化定义,子类必须实现
最终方法:子类不能重写,对所有子类都是一样的。
钩子方法:父类给出默认实现,子类也可以重写。
程序示例:
Shopping.java
package TemplateMethodParttern;
public abstract class Shopping {
//模版方法
public void buyGoods(){
userLogin();
buy();
pay();
}
//子类不能重写的方法(最终方法)
public final void userLogin() {
System.out.println("用户登录");
}
//子类必须实现(抽象方法)
public abstract void buy();
//子类选择重写支付(钩子方法)
public void pay() {
System.out.println("使用银联卡支付");
}
}
ShoesShopping.java
package TemplateMethodParttern;
public class ShoesShopping extends Shopping{
@Override
//实现抽象方法
public void buy() {
System.out.println("购买红蜻蜓皮鞋");
}
}
ClothesShopping.java
package TemplateMethodParttern;
public class ClothesShopping extends Shopping {
//实现抽象方法
@Override
public void buy(){
System.out.println("购买七匹狼男装");
}
//重写钩子方法
@Override
public void pay(){
System.out.println("使用支付宝付款");
}
}
MyTest.java
package TemplateMethodParttern;
public class MyTest {
public static void main(String[] args) {
Shopping shoesShopping = new ShoesShopping();
shoesShopping.buyGoods();
Shopping clothesShopping = new ClothesShopping();
clothesShopping.buyGoods();
}
}
上一篇: Singleton 单例模式的C++实现