设计模式——模板方法模式
定义了一个算法的骨架,并允许子类为一个或者多个步骤提供实现
模板方法使子类在不改变算法结构的情况下,重新定义算法的某些步骤
(1)一次性实现一个算法的不变部分,将可变的行为留给子类
(2)各个子类中的公共行为被提取出来,并集中到一个公共父类中,从而避免代码重复
优点
提高复用与扩展 符合开闭原则
相关设计模式模板方法与工厂方法模式工厂方法是模板方法的一种特殊实现
模板方法与策略模式模板方法模式与策略模式内部都封装了一定的算法,但是二者模板方法是不改变算法的流程的(因为模板方法模式中不同的部分交给子类去实现了,在流程上并不改变),而策略模式是可以改变算法的流程的
实例以购票流程作为例子,(感觉不是特别恰当)
public abstract class ATicketUtil {
public void buyTicket(){
personIdCardVerify(personIdCard());
payment(paymentAccount());
showTicket();
}
public void personIdCardVerify(String personIdCard){
System.out.println("买票——身份验证 身份证号码"+personIdCard);
}
public void payment(double account){
System.out.println("买票——先付款后出票 付款金额"+account);
}
/**
* 出票
*/
public void showTicket(){
System.out.println("购票成功!");
}
/**
* 身份证号
*/
public abstract String personIdCard();
public abstract double paymentAccount();
}
public class TicketUtil extends ATicketUtil {
private String personIdCard;
private double account;
public TicketUtil(String personIdCard, double account) {
this.personIdCard = personIdCard;
this.account = account;
}
@Override
public String personIdCard() {
return personIdCard;
}
@Override
public double paymentAccount() {
return account;
}
}
test
public class Test {
public static void main(String[] args) {
new TicketUtil("123456789123456789",100).buyTicket();
}
}
版权声明
本文仅代表作者观点,不代表博信信息网立场。