Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1741775
  • 博文数量: 297
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 3006
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-06 22:04
个人简介

Linuxer, ex IBMer. GNU https://hmchzb19.github.io/

文章分类

全部博文(297)

文章存档

2020年(11)

2019年(15)

2018年(43)

2017年(79)

2016年(79)

2015年(58)

2014年(1)

2013年(8)

2012年(3)

分类: Java

2017-02-15 10:25:46

Template pattern 是很容易理解的,父类只声明一些函数,并不去实现,具体的实现让子类去自己实现。

Usage in jdk: 
All non-abstract methods of java.io.InputStream, java.io.OutputStream, java.io.Reader and java.io.Writer 。 


点击(此处)折叠或打开

  1. package template;

  2. abstract class PurchaseOrderTemplate{
  3.     public abstract void doSelect();
  4.     public abstract void doPayment();

  5.     public final void doPack(){
  6.         System.out.println("Gift wrap done");
  7.     }

  8.     public abstract void doDelivery();

  9.     public final void processOrder(){
  10.         doSelect();
  11.         doPayment();
  12.         doPack();
  13.         doDelivery();
  14.     }
  15. }

  16. class StorePurchaseOrder extends PurchaseOrderTemplate{
  17.     @Override
  18.     public void doSelect(){
  19.         System.out.println("Customer chooses the item from shelf");
  20.     }
  21.     
  22.     @Override
  23.     public void doPayment(){
  24.         System.out.println("Pays at counter through cash/POS");
  25.     }
  26.     
  27.     @Override
  28.     public void doDelivery(){
  29.         System.out.println("Item delivered to in delivery counter");
  30.     }
  31. }

  32. class OnlinePurchaseOrder extends PurchaseOrderTemplate{
  33.     @Override
  34.     public void doSelect(){
  35.         System.out.println("Item added to online shopping cart");
  36.         System.out.println("Get gift wrap preference.");
  37.         System.out.println("Get delivery address");
  38.     }
  39.     
  40.     @Override
  41.     public void doPayment(){
  42.         System.out.println("Online payment through Netbanking/Cards");
  43.     }
  44.     
  45.     @Override
  46.     public void doDelivery(){
  47.         System.out.println("Ship the item through post to delivery address");
  48.     }
  49. }


  50. public class TemplatePatternDemo {
  51.     public static void main(String[] args){
  52.         PurchaseOrderTemplate online = new OnlinePurchaseOrder();
  53.         online.processOrder();
  54.         PurchaseOrderTemplate offline = new StorePurchaseOrder();
  55.         offline.processOrder();
  56.     }
  57. }


阅读(515) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~