`
xieyaxiong
  • 浏览: 41097 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

design pattern——模板方法模式

 
阅读更多

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

 

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

 

 

 

 

模板方法模式结构图:

 


 

 

 

 

 

模板方法模式实现代码:

 

/**
 * 模板父类
 * @author bruce
 *
 */
public abstract class AbstractClass {
	
	/**
	 * 模板方法
	 */
	public void templateMethod(){
		
		// other method
		primitiveOperation1();
		
		//other method
		
		primitiveOperation2();
		
		//other method
	}
	
	public abstract void primitiveOperation1();
	
	public abstract void primitiveOperation2();
	
}



/**
 * 模板方法实现类A
 * @author bruce
 *
 */
public class ConcreteClassA extends AbstractClass{

	@Override
	public void primitiveOperation1() {
		// TODO Auto-generated method stub
		System.out.println("A: operation1");
	}

	@Override
	public void primitiveOperation2() {
		// TODO Auto-generated method stub
		System.out.println("A: operation2");
	}

}







/**
 * 模板方法实现类B
 * @author bruce
 *
 */
public class ConcreteClassB extends AbstractClass{

	@Override
	public void primitiveOperation1() {
		// TODO Auto-generated method stub
		System.out.println("B: operation1");
	}

	@Override
	public void primitiveOperation2() {
		// TODO Auto-generated method stub
		System.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
		 */
	}
}
  • 大小: 5.5 KB
分享到:
评论

相关推荐

    design-pattern-java.pdf

    算法的封装与切换——策略模式(四) 模板方法模式-Template Method Pattern 模板方法模式深度解析(一) 模板方法模式深度解析(二) 模板方法模式深度解析(三) 访问者模式-Visitor Pattern 操作复杂对象结构——...

    Head First Design Pattern

    2. **工厂方法模式(Factory Method)**:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使类的实例化推迟到子类。它提供了一种抽象,使得代码与具体实现分离。 3. **抽象工厂模式(Abstract ...

    GoF的经典著作设计模式(Design Pattern)

    22. **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 23. **访问者模式**:表示一个作用于某对象结构中的各元素的操作...

    design pattern PPT

    设计模式(Design Pattern)是软件工程中用于解决软件设计问题的既定方案。设计模式并非直接的代码实现,而是一套被验证过的通用解决方案模板。它们是由经验丰富的软件开发者总结出的,在特定上下文中对常见问题的...

    Design Pattern FrameworkTM

    - 解释了模板方法模式的基本思想及其在软件架构中的作用。 - 分析了该模式在 .NET 平台上的实现。 - **第 9 章:迭代器模式与组合模式**(页码:15) - 介绍了迭代器模式和组合模式的核心概念。 - 展示了这两种...

    GOF之23种设计模式的C#实现:DesignPattern.zip

    - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素的类的前提下定义作用于...

    HeadFirst Design Pattern

    3. 行为型模式:这类模式主要关注对象间的交互和责任分配,如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、备忘录模式(Memento...

    Observer HeadFirst design pattern

    在"Observer HeadFirst design pattern"中,作者通过生动的比喻和互动式的例子,帮助读者深入理解观察者模式的核心概念和实现方式。 观察者模式的核心思想是将"主题"(Subject)与"观察者"(Observer)解耦,主题...

    design-pattern(设计模式,包括创建型、结构型、行为型三大类共23种常见的设计模式和J2EE常见设计模式等).zip

    - 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - 访问者模式:表示一个作用于某对象结构中的各元素的操作,它可以在...

    设计模式design-pattern-java.pdf

    工厂方法模式定义了一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 #### 2.3 抽象工厂模式 抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,无需指定它们...

    Introduction to Design Pattern in C#

    工厂方法模式在系统需要扩展新类型的对象时,提供了极大的灵活性,而装饰器模式则可以在不改变原有类的基础上为其增加新功能。这些模式的灵活运用,使得C#程序能够更好地适应变化多端的业务需求。 虽然对于初学者来...

    模式举例代码——设计模式和举例代码

    - 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 在`...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    - **模板方法**(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - **访问者**(Visitor):表示一个作用于某对象结构中的各元素的操作。 #### 八、设计模式的应用总结 **设计模式的应用...

    Design Pattern

    - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - 访问者模式(Visitor):表示一个作用于某对象...

    设计模式 Head First

    #### 第8章:算法封装——模板方法模式 模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这种方法让子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通过这种方式,可以有效地...

    designPattern9:设计模式:男人和女人,访问者模式

    本项目“designPattern9”聚焦于一种名为“访问者模式”的设计模式,该模式在Java编程中广泛使用。访问者模式的主要目标是封装对对象结构的操作,使我们可以在不修改对象结构的前提下增加新的操作。 访问者模式的...

Global site tag (gtag.js) - Google Analytics