针对问题:许多类可能做着大同小异的事情,很多方法都有重复,可以将这些类抽象出一个继承结构,将重复的部分放在父类中来实现复用,而不同的地方由子类提供实现,和工厂方法模式类似。并且由子类提供实现这些思想可以大量用于类似回调的功能,例如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
分享到:
相关推荐
算法的封装与切换——策略模式(四) 模板方法模式-Template Method Pattern 模板方法模式深度解析(一) 模板方法模式深度解析(二) 模板方法模式深度解析(三) 访问者模式-Visitor Pattern 操作复杂对象结构——...
2. **工厂方法模式(Factory Method)**:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使类的实例化推迟到子类。它提供了一种抽象,使得代码与具体实现分离。 3. **抽象工厂模式(Abstract ...
22. **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 23. **访问者模式**:表示一个作用于某对象结构中的各元素的操作...
设计模式(Design Pattern)是软件工程中用于解决软件设计问题的既定方案。设计模式并非直接的代码实现,而是一套被验证过的通用解决方案模板。它们是由经验丰富的软件开发者总结出的,在特定上下文中对常见问题的...
- 解释了模板方法模式的基本思想及其在软件架构中的作用。 - 分析了该模式在 .NET 平台上的实现。 - **第 9 章:迭代器模式与组合模式**(页码:15) - 介绍了迭代器模式和组合模式的核心概念。 - 展示了这两种...
- 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素的类的前提下定义作用于...
3. 行为型模式:这类模式主要关注对象间的交互和责任分配,如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、备忘录模式(Memento...
在"Observer HeadFirst design pattern"中,作者通过生动的比喻和互动式的例子,帮助读者深入理解观察者模式的核心概念和实现方式。 观察者模式的核心思想是将"主题"(Subject)与"观察者"(Observer)解耦,主题...
- 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - 访问者模式:表示一个作用于某对象结构中的各元素的操作,它可以在...
工厂方法模式定义了一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 #### 2.3 抽象工厂模式 抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,无需指定它们...
工厂方法模式在系统需要扩展新类型的对象时,提供了极大的灵活性,而装饰器模式则可以在不改变原有类的基础上为其增加新功能。这些模式的灵活运用,使得C#程序能够更好地适应变化多端的业务需求。 虽然对于初学者来...
- 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 在`...
- **模板方法**(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - **访问者**(Visitor):表示一个作用于某对象结构中的各元素的操作。 #### 八、设计模式的应用总结 **设计模式的应用...
- 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - 访问者模式(Visitor):表示一个作用于某对象...
#### 第8章:算法封装——模板方法模式 模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这种方法让子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通过这种方式,可以有效地...
本项目“designPattern9”聚焦于一种名为“访问者模式”的设计模式,该模式在Java编程中广泛使用。访问者模式的主要目标是封装对对象结构的操作,使我们可以在不修改对象结构的前提下增加新的操作。 访问者模式的...