设计模式(22)——Template Method(模板方法)
来源:互联网 发布:linux中more命令 编辑:程序博客网 时间:2024/06/16 14:26
模板方法是什么?
模板方法定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这样的话,子类可以修改算法的某些步骤,而不会改变算法的结构。
模板方法的适用范围
1. 一次性实现算法的不变部分,将可变的行为留给子类实现
2. 提出子类中的公共部分到公共父类中,以避免代码重复
3. 控制子类扩展。
模板方式的示例
下面以商店的订单处理为例说明模板方式的使用:
public abstract class OrderProcessTemplate {public boolean isGift;public abstract void doSelect();public abstract void doPayment();public final void giftWrap() {System.out.println("Gift wrap done.");}public abstract void doDelivery();public final void processOrder() {doSelect();doPayment();if (isGift) {giftWrap();}doDelivery();}}网络订单:
public class NetOrder extends OrderProcessTemplate {@Overridepublic void doSelect() {System.out.println("Item added to online shopping cart,");System.out.println("Get gift wrap preference,");System.out.println("Get delivery address.");}@Overridepublic void doPayment() {System.out.println("Online Payment through Netbanking/Cards.");}@Overridepublic void doDelivery() {System.out.println("Ship the item through post to delivery address");}}
实体店订单:
public class StoreOrder extends OrderProcessTemplate {@Overridepublic void doSelect() {System.out.println("Customer chooses the item from shelf.");}@Overridepublic void doPayment() {System.out.println("Pays at counter through cash/POS");}@Overridepublic void doDelivery() {System.out.println("Item deliverd to in delivery counter.");}}模板方法测试:
public class TemplateMethodPatternClient {public static void main(String... args) {System.out.println("$$$$$$$ NetOrder instance of the Template: $$$$$$$");OrderProcessTemplate netOrder = new NetOrder();netOrder.processOrder();System.out.println("$$$$$$$ StoreOrder instance of the Template: $$$$$$$");OrderProcessTemplate storeOrder = new StoreOrder();storeOrder.processOrder();}}
链接:http://javapapers.com/design-patterns/template-method-design-pattern/
0 0
- 设计模式(22)——模板方法 Template Method
- C++设计模式——模板方法(Template Method)
- 设计模式(22)——Template Method(模板方法)
- Java设计模式之一——模板方法设计模式(Template Method)
- 设计模式(4)——模板方法模式(Template Method Pattern)
- 设计模式(11)——模板方法模式(Template Method Pattern,行为型)
- Java面向对象设计模式(十四)——模板方法模式(Template Method)
- java设计模式(十三)——模板方法模式(Template Method)
- 设计模式学习笔记(十六)——Template Method模板方法模式
- java设计模式14——模板方法模式(Template Method)
- 设计模式(14)——模板方法模式(Template Method)
- 设计模式 —— 模板方法模式(Template method Pattern)
- Java设计模式——模板方法模式(TEMPLATE METHOD PATTERN)
- 设计模式——模板方法模式( Template Method Pattern)
- 【design pattern】行为型模式之—模板方法设计模式(Template method)
- 设计模式——模板方法模式【Template Method Pattern】
- 设计模式——模板方法模式(Template Method)
- 设计模式之模板方法模式(Template Method)
- kyeremal-spoj375-Query on a tree-树链剖分
- 移动App服务端架构设计
- 1、Linux操作系统之操作篇-逻辑卷LVM使用命令
- nmake命令(windows下的makefile)
- Android 编程下 Touch 事件的分发和消费机制
- 设计模式(22)——Template Method(模板方法)
- Spring 错误!
- 黑马程序员---银行业务调度系统
- SQL Server事務編程相關總結
- 单据元数据开发流程
- css四中定位总结备忘
- Silverlight调用webservice
- 【C语言】大小端的判断
- 详解在Hibernate中配置数据库方言的作用和好处以及各种数据库的方言连接