`

3. 行为型模式 (2) 模板方法模式

阅读更多
3. 行为型模式 (2) 模板方法模式

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

优点:
1. 封装不变部分,扩展可变部分。
2. 提取公共代码,便于维护。
3. 行为由父类控制,子类实现。

缺点:
1. 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。


1. 模板方法模式

package com.andrew.pattern0302.template.model01;
public abstract class Game {
    abstract void initalize();
    abstract void startPlay();
    abstract void endPlay();
    // 模板
    public final void play() {
        initalize();
        startPlay();
        endPlay();
    }
}


package com.andrew.pattern0302.template.model01;
public class Cricket extends Game {
    @Override
    void initalize() {
        System.out.println("Cricket Game Initialized! Start playing.");
    }
    @Override
    void startPlay() {
        System.out.println("Cricket Game Started. Enjoy the game!");
    }
    @Override
    void endPlay() {
        System.out.println("Cricket Game Finished!");
    }
}

package com.andrew.pattern0302.template.model01;
public class Football extends Game {
    @Override
    void initalize() {
        System.out.println("Football Game Initialized! Start playing.");
    }
    @Override
    void startPlay() {
        System.out.println("Football Game Started. Enjoy the game!");
    }
    @Override
    void endPlay() {
        System.out.println("Football Game Finished!");
    }
}


package com.andrew.pattern0302.template.model01;
/**
 * 1. 模板模式
 * 
 * @author andrew
 * @date 2018/08/15
 */
public class Client {
    public static void main(String[] args) {
        Game game = new Cricket();
        game.play();
        System.out.println();
        game = new Football();
        game.play();
    }
}
运行结果:
Cricket Game Initialized! Start playing.
Cricket Game Started. Enjoy the game!
Cricket Game Finished!

Football Game Initialized! Start playing.
Football Game Started. Enjoy the game!
Football Game Finished!
分享到:
评论

相关推荐

    [行为型模式] 模板方法模式的理解

    模板方法模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色,允许你在抽象类中定义算法的骨架,而将一些步骤延迟到子类中实现。这种模式遵循开闭原则,即对扩展开放,对修改关闭。接下来,我们将深入探讨...

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象...4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

    JAVA-设计模式-行为型模式-模板方法模式

    JAVA-设计模式-行为型模式-模板方法模式

    [浪曦原创]JAVA设计模式.第10讲.模板方法模式.rar

    在提供的文件列表中,"模板方法模式.ppt"可能包含对模板方法模式的详细解释,包括示例和应用场景。"TemplateDemo"可能是演示模板方法模式的Java代码示例。在"浪曦原创"的讲解中,可能详细讲述了如何在Java中应用模板...

    c++设计模式-行为型模式-模板方法模式

    c++设计模式-行为型模式-模板方法模式;qt工程;c++简单源码; 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重...

    设计模式之模板方法模式

    模板方法模式是面向对象设计模式中的行为模式之一,它在Java等面向对象编程语言中有着广泛的应用。模板方法模式的主要思想是在一个抽象类中定义一个算法的骨架,而将一些步骤延迟到子类中实现。这样,子类可以重写...

    11.设计模式-模板方法模式1

    模板方法模式(Template Method Pattern)是一种行为设计模式,它允许在父类中定义算法的框架,然后由子类提供具体的实现。这种模式的核心是“模板方法”,它在父类中定义了一个操作的步骤顺序,并将某些步骤声明为...

    深入浅出设计模式之模板方法模式

    模板方法模式是一种行为型设计模式,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中实现。它使得子类可以在不改变一个算法结构的情况下,重新定义该算法的某些特定步骤。 #### 二、模板方法模式的结构 ...

    设计模式_行为型_模板方法模式.md

    模板方法模式是一种行为设计模式,它定义了一个操作中的算法的骨架,将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。 ### 模板方法模式的关键角色 1. **...

    设计模式-模板方法模式ppt

    1. **减少重复代码**:模板方法模式通过将公共行为集中在一个模板方法中,减少了重复代码的数量。 2. **易于扩展**:添加新的子类时只需要重写某些方法,而不需要改变现有的模板方法。 3. **提高可维护性**:由于...

    7.java模板模式与8.策略模式示例

    模板模式是一种行为设计模式,而策略模式则属于结构型设计模式。这两种模式都是用来处理算法和行为的,但它们的核心理念和使用场景有所不同。 ### 模板模式 模板模式定义了一个操作中的算法骨架,而将一些步骤延迟...

    23种设计模式 (创建型,结构型,行为型)

    行为型: 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式(Chain of Responsibility Pattern) 20. 备忘录模式(Memento Pattern)...

    23种设计模式,创建型模式共5种,结构型模式7种,行为型模式11种

    设计模式分为三大类:创建型模式、结构型模式和行为型模式。 **创建型模式**关注的是对象的创建。共有五种创建型模式: 1. **工厂方法模式**:它定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法...

    设计模式(十一)之模板方法模式.zip

    模板方法模式是面向对象设计中的一种行为设计模式,它在软件工程中扮演着重要的角色,尤其是在需要维护代码的可扩展性和可复用性时。这个模式的核心思想是封装不变的部分,将可变部分抽象出来,让子类进行扩展。通过...

    设计模式-模板方法模式(讲解及其实现代码)

    模板方法模式是一种行为设计模式,它允许在定义行为框架的同时,延迟部分具体步骤到子类中实现。这种模式主要用于在父类中定义算法的骨架,而将一些步骤的实现细节留给子类去完成,从而使得不同的子类可以重用相同的...

    设计模式C++学习之模板方法模式(Template Method)

    模板方法模式(Template Method)是设计模式中行为型模式的一种,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这个模式在C++编程中有着...

    Head First 设计模式 (八) 模板方法模式(Template Method pattern) C++实现

    模板方法模式是设计模式中的一种行为模式,它在软件工程中扮演着重要的角色,尤其是在C++这样的面向对象编程语言中。这种模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的...

Global site tag (gtag.js) - Google Analytics