类图
代码
AbstractClass
1 | abstract class Invoice{ |
ConcreteClass
1 | class ConcreteInvoice extends Invoice{ |
测试类
1 | public class Main { |
总结
概述
文中的例子是一个工作中真实的例子,只是做了一些简化。
Invoice.start()是开发票的核心模块,提供了一个模板方法make,各个方法服务的提供商提供了开发票的具体实现
优点
可以进行核心业务的处理,细节由不同的实现方进行定义,提取公共行为