意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

设计模式——模板方法模式

来源:恒创科技 编辑:恒创科技编辑部
2024-01-24 21:23:59


模板方法模式简介定义

定义了一个算法的骨架,并允许子类为一个或者多个步骤提供实现
模板方法使子类在不改变算法结构的情况下,重新定义算法的某些步骤

类型:行为型使用场景

(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();
}
}


上一篇: 设计模式——原型设计模式 下一篇: 手机怎么远程登录云服务器?