内容简介:模板方法属于行为型设计模式,在父类中定义处理流程的框架,在子类中实现具体的处理在父类(抽象类)中定义好算法的流程,提供抽象方法,针对不同的实现交由不同的子类去实现,通过这种方式将公共代码提取出来封装在父类中,然后父类去控制行为,子类负责实现,这样当有很多子类的时候,如果要修改算法,只需要在父类中更改算法的行为即可。已支付为例,涉及AbstractPay,BankCardPay,WeChatPay三个类。
模板方法属于行为型设计模式,在父类中定义处理流程的框架,在子类中实现具体的处理
什么是模板方法
在父类(抽象类)中定义好算法的流程,提供抽象方法,针对不同的实现交由不同的子类去实现,通过这种方式将公共代码提取出来封装在父类中,然后父类去控制行为,子类负责实现,这样当有很多子类的时候,如果要修改算法,只需要在父类中更改算法的行为即可。
实现
已支付为例,涉及AbstractPay,BankCardPay,WeChatPay三个类。
AbstractPay
抽象类(父类),定义了三个抽象方法和一个控制支付流程的方法,也就是模板方法,这个方法使用final修饰,防止被重写
/**
* @auther: chenmingyu
* @date: 2019/2/13 16:58
* @description: 抽象类,定义支付流程
*/
public abstract class AbstractPay {
/**
* 获取支付信息
*/
abstract String getPayInfo();
/**
* 执行支付
*/
abstract void executePay();
/**
* 支付反馈信息
*/
abstract void payMessage();
/**
* 支付
*/
public final void pay(){
String info = getPayInfo();
System.out.println("支付账户:"+info);
executePay();
payMessage();
}
}
BankCardPay
子类实现,提供银行卡支付,继承AbstractPay类重写三个抽象方法,提供银行卡支付的实现
/**
* @auther: chenmingyu
* @date: 2019/2/13 17:18
* @description: 银行卡支付
*/
public class BankCardPay extends AbstractPay{
@Override
String getPayInfo() {
return "我的银行卡信息";
}
@Override
void executePay() {
System.out.println("银行卡支付了");
}
@Override
void payMessage() {
System.out.println("银行卡方式支付,发短息");
}
}
WeChatPay
子类实现,提供微信支付,继承AbstractPay类重写三个抽象方法,提供微信支付的实现
/**
* @auther: chenmingyu
* @date: 2019/2/13 17:20
* @description: 微信支付
*/
public class WeChatPay extends AbstractPay{
@Override
String getPayInfo() {
return "我的微信支付信息";
}
@Override
void executePay() {
System.out.println("微信支付了");
}
@Override
void payMessage() {
System.out.println("微信方式支付,微信内发服务通知");
}
}
测试
public static void main(String[] args) {
BankCardPay bankCardPay = new BankCardPay();
bankCardPay.pay();
System.out.println("... 分割线 ...");
WeChatPay weChatPay = new WeChatPay();
weChatPay.pay();
}
输出
支付账户:我的银行卡信息 银行卡支付了 银行卡方式支付,发短息 ... 分割线 ... 支付账户:我的微信支付信息 微信支付了 微信方式支付,微信内发服务通知
总结一下,就是抽象类封装了一个final类型的方法,方法中调用其他的抽象方法,制定业务流程,提供的抽象方法交由子类去实现。当你有多个子类实现逻辑相同时,建议使用模板方法。
以上所述就是小编给大家介绍的《设计模式总结:模板方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
黑客大曝光
Joel Scambray、Vincent Liu、Caleb Sima / 姚军 / 机械工业出版社华章公司 / 2011-10 / 65.00元
在网络技术和电子商务飞速发展的今天,Web应用安全面临着前所未有的挑战。所有安全技术人员有必要掌握当今黑客们的武器和思维过程,保护Web应用免遭恶意攻击。本书由美国公认的安全专家和精神领袖打造,对上一版做了完全的更新,覆盖新的网络渗透方法和对策,介绍如何增强验证和授权、弥补Firefox和IE中的漏洞、加强对注入攻击的防御以及加固Web 2.0安全,还介绍了如何将安全技术整合在Web开发以及更广泛......一起来看看 《黑客大曝光》 这本书的介绍吧!