首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

design pattern——模板方法形式

2012-11-08 
design pattern——模板方法模式针对问题:许多类可能做着大同小异的事情,很多方法都有重复,可以将这些类抽象

design pattern——模板方法模式

针对问题:许多类可能做着大同小异的事情,很多方法都有重复,可以将这些类抽象出一个继承结构,将重复的部分放在父类中来实现复用,而不同的地方由子类提供实现,和工厂方法模式类似。并且由子类提供实现这些思想可以大量用于类似回调的功能,例如java api 集合的排序功能。

?

模板方法模式?定义了一个算法的步骤,并允许子类为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。

?

?

?

?

模板方法模式结构图:

?


design pattern——模板方法形式

?

?

?

?

?

模板方法模式实现代码:

?

/** * 模板父类 * @author bruce * */public abstract class AbstractClass {/** * 模板方法 */public void templateMethod(){// other methodprimitiveOperation1();//other methodprimitiveOperation2();//other method}public abstract void primitiveOperation1();public abstract void primitiveOperation2();}/** * 模板方法实现类A * @author bruce * */public class ConcreteClassA extends AbstractClass{@Overridepublic void primitiveOperation1() {// TODO Auto-generated method stubSystem.out.println("A: operation1");}@Overridepublic void primitiveOperation2() {// TODO Auto-generated method stubSystem.out.println("A: operation2");}}/** * 模板方法实现类B * @author bruce * */public class ConcreteClassB extends AbstractClass{@Overridepublic void primitiveOperation1() {// TODO Auto-generated method stubSystem.out.println("B: operation1");}@Overridepublic void primitiveOperation2() {// TODO Auto-generated method stubSystem.out.println("B: operation2");}}/** * 测试 * @author bruce * */public class Client {public static void main(String[] args) {AbstractClass aClass=new ConcreteClassA();aClass.templateMethod();System.out.println("----------");aClass=new ConcreteClassB();aClass.templateMethod();/** * output:   A: operation1   A: operation2   ----------   B: operation1   B: operation2 */}}

热点排行