package templateMethod;
/**
* @author jiq
* 类型:Behavioral
* 定义: 模板方法在一个方法中定义了一个算法的骨架,而将其中一些步骤的实现延迟到子类中。
* 模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
*
* OO原则:好莱坞原则- 别调用我们,我们会调用你的。
* 在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,
* 演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。模板方法模式充分的
* 体现了“好莱坞”原则。由父类完全控制着子类的逻辑,子类不需要调用父类,而通过父类来
* 调用子类,子类可以实现父类的可变部份,却继承父类的逻辑,不能改变业务逻辑。
* 开闭原则 - 模板方法模式意图是由抽象父类控制顶级逻辑,并把基本操作的实现推迟到子类
* 去实现,这是通过继承的手段来达到对象的复用,同时也遵守了开闭原则。
*
* 区别: 模版方法封装可互换的行为,然后使用委托来决定要采用哪个行为。
* 策略模式,由子类来决定如何实现算法中的步骤。
* 工厂方法,由子类来决定要实例化哪个具体类。
* 代码说明: 有一个游戏框架,规定了玩游戏的人数,游戏时间,游戏顺序等。
* 我们可以在不改变这个游戏框架的情况下,将具体的游戏实现方式延迟到
* 子类中去。
*/
abstract class Game {
public int playersCount = 0;
//提供给子类实现的抽象方法
abstract void initializeGame();
abstract void makePlay(int player);
abstract boolean endOfGame();
abstract void printWinner();
/**
* 模板方法:定义了一连串的步骤,每个步骤由一个方法代表。
* 将模板方法申明为final防止被覆盖。
*/
final void playOneGame() {
initializeGame();
int j = 0;
while (!endOfGame()){
makePlay(j);
j = (j + 1) % playersCount;
}
printWinner();
hook(); //钩子
}
/**
* 也可以有具体方法,将其申明为final让子类无法覆盖它
* 它可以被模版方法直接使用,也可以被子类使用
*/
public final void otherMethod(){/*...*/}
/**
* 我们也有默认不做事情的方法,称为“钩子”。子类可以
* 视情况决定要不要覆盖它。
*/
void hook() {}
}
//象棋游戏
class Cheese extends Game{
private int count = 0;
void initializeGame() { playersCount = 2; }
void makePlay(int player) {System.out.print(player+" play\n");}
void printWinner() {System.out.print("Winner is XX");}
boolean endOfGame() {
if(count++ > 5) return true;
else return false;
}
}
public class TemplateMethod {
public static void main(String[] args) {
//开始玩游戏
Game game = new Cheese();
game.playOneGame();
}
}
分享到:
相关推荐
模板模式什么是模板模式Define the skeleton of an algorithm in an operation, deferring some s
JAVA-设计模式-行为型模式-模板方法模式
c++设计模式-行为型模式-模板方法模式;qt工程;c++简单源码; 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重...
模板方法模式是设计模式中行为型模式的一种,它在软件工程中扮演着非常重要的角色,尤其是在Java编程中。模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它允许子类不改变一个算法的结构即可重...
模板方法设计模式是一种在面向对象设计中常用的行为型设计模式,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。这种模式允许子类在不改变算法整体结构的情况下,重定义某些特定步骤。 在软件开发中,模板...
模板方法模式是一种行为设计模式,它定义了一个操作中的算法的骨架,将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。 ### 模板方法模式的关键角色 1. **...
模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个操作中的算法骨架,并将一些步骤延迟到子类中。这种模式允许子类在不改变算法结构的情况下,重新定义算法的某些特定步骤。 #### 二、...
模板方法模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色,允许你在抽象类中定义算法的骨架,而将一些步骤延迟到子类中实现。这种模式遵循开闭原则,即对扩展开放,对修改关闭。接下来,我们将深入探讨...
模板方法模式(Template Pattern)是设计模式中行为型模式的一种,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。这种模式允许子类重新定义或改变某些基本操作,但整体结构和顺序保持不变。在Java编程中,...
设计模式(创建型、结构型、行为型) 设计模式是软件设计中的一种重要概念,它们可以帮助开发者更好地设计和实现软件系统。根据GoF(Gang of Four)的分类,设计模式可以分为三大类:创建型、结构型和行为型。 ...
行为型: 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式(Chain of Responsibility Pattern) 20. 备忘录模式(Memento Pattern)...
行为型模式 行为型模式(Behavioral Patterns)是设计模式的一种,关注对象行为功能上的抽象,从而提升对象在行为功能上的可拓展性,能以最少的代码变动完成功能的增减。 在设计模式中,行为型模式主要包括以下几...
模板设计模式是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤延迟到子类中。使得子类可以不改变一个算法结构即可重定义该算法的某些特定步骤。在HibernateTemplate中,这一模式得到了充分的应用,...
模板方法模式是一种行为设计模式,它允许在定义行为框架的同时,延迟一些步骤的实现到子类。这种模式常用于有固定算法步骤但某些步骤可以有不同的实现情况的场景。在给出的例子中,`HummerModel` 抽象类代表了模板...
按照不同的功能特性,设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 #### 二、创建型模式 创建型模式主要用于解决对象创建的过程,旨在简化对象创建的复杂度,同时保持对象创建的灵活性。主要...
本压缩包"design-pattern(设计模式,包括创建型、结构型、行为型三大类共23种常见的设计模式和J2EE常见设计模式等).zip"提供了全面的设计模式学习资源,适用于初学者和有经验的开发者,帮助他们提升软件设计能力。...
模板方法模式(Template Method)是设计模式中行为型模式的一种,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这个模式在C++编程中有着...
网络审计系统,特别是运维安全管控型的LA-OS系统,是针对企业信息安全需求的重要解决方案。该系统旨在监控和审计信息系统运维人员及第三方维护人员的操作行为,以防止潜在的安全风险和损失。在当前信息化高度发展的...
模板方法模式通常包含一个模板方法(抽象类中的方法),它定义了算法的主要步骤,并可以调用钩子方法(默认实现或空实现)来让子类定制算法的部分行为。 在实际开发中,模板方法模式常用于框架和库的设计,比如...