`
iamzhongyong
  • 浏览: 804461 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于模板方法模式(代码)

阅读更多

模板方法模式是一种比较简单的设计模式,这里写了一个例子出来。

1、基本的模板方法实现

2、模板方法中钩子方法的实现

3、模板方法中回调的处理(带有回调功能的模板方法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package template;
 
public abstract class AbstractTepmplateMethod {
 
    //步骤1
    protected abstract void step1();
 
    //步骤2
    protected abstract void step2();
 
    //步骤3
    protected abstract void step3();
 
    //步骤4
    protected abstract void step4();
 
    /*
     * 模板方法,因为一般情况下不需要子类覆写,所以增加final变量
     * 模板方法屏蔽了一些固定步骤,这样的话子类不需要关注步骤的组合,仅仅实现具体的每一个步骤即可
     * 这个其实也是“好莱坞原则”的体现,子类可以不关心步骤的组合,仅仅调用即可
     */
    public final void run(){
        System.out.println("start...");
        step1();
        step2();
        hookMethod();
        step3();
        step4();
        System.out.println("end...");
    }
 
    /**
     * 钩子方法,父类提供了简单的实现,子类可以覆写
     */
    protected void hookMethod(){
        System.out.println("hook method");
    }
 
    /**
     * 模板方法,增加回调处理,spring中ORM层中很多都是callback的处理
     */
    public final void runCallback(TemplateClientCallback action){
        System.out.println("start...");
        step1();
        step2();
        hookMethod();
        step3();
        step4();
        System.out.println("end...");
        if(null != action){
            action.action();
        }
    }
 
}
/**
 * 增加回调的处理,模板方法支持回调处理
 */
abstract class TemplateClientCallback{
    //回调的逻辑处理方法
    public abstract void action();
}

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package template;
 
public class TemplateMethod extends AbstractTepmplateMethod {
 
    @Override
    protected void step1() {
        System.out.println("iamzhongyong 1");
    }
 
    @Override
    protected void step2() {
        System.out.println("iamzhongyong 2");
    }
 
    @Override
    protected void step3() {
        System.out.println("iamzhongyong 3");
    }
 
    @Override
    protected void step4() {
        System.out.println("iamzhongyong 4");
    }
 
 
    /**
     * 钩子方法,子类重新实现
     */
    @Override
    protected void hookMethod() {
        super.hookMethod();
        System.out.println("template method hook method...");
    }
 
    public static void main(String[] args) {
        TemplateMethod template = new TemplateMethod();
 
        //模板方法
        template.run();
 
        //带回调功能的模板方法
        template.runCallback(new TemplateClientCallback() {
            @Override
            public void action() {
                System.out.println("TemplateClientCallback...");
            }
        });
    }
}

 

1
0
分享到:
评论

相关推荐

    模板方法模式代码示例

    模板方法模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色。这种模式定义了一个操作中的算法...通过提供一个基础的执行流程,并允许子类在特定步骤中自定义行为,模板方法模式使代码更加结构化和易于维护。

    模板方法模式案例代码

    模板方法模式是一种设计模式,属于行为设计模式,它在面向对象设计中扮演着重要的角色。...通过分析这些代码,你可以更深入地理解如何在不同场景下使用模板方法模式来解决设计问题,提高代码的复用性和可扩展性。

    设计模式之模板方法模式

    总的来说,模板方法模式提供了一种代码复用的有效手段,允许在不修改原有代码的基础上扩展功能,提高了软件的灵活性和可维护性。它是设计模式中一个非常实用的工具,对于理解和掌握面向对象设计有重要的意义。在开发...

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

    模板方法模式" 中,应该包含了关于模板方法模式的更多详细讲解、示例代码以及如何在实际项目中应用该模式的实例。通过学习这部分内容,读者可以深入理解模板方法模式的工作原理,并学会如何在自己的代码中有效利用这...

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

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

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

    4. **提高代码的稳定性**:由于模板方法模式将算法的结构与实现细节分离,因此当算法发生变化时,只需要修改模板方法中的算法结构即可,而无需修改具体的实现。 #### 四、模板方法模式的应用场景 1. **多步骤处理*...

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

    通过学习和应用模板方法模式,开发者可以在保证代码结构清晰的同时,提高代码的复用性和可维护性。在实际开发中,模板方法模式常用于框架设计、游戏逻辑、GUI组件等场景,有助于降低复杂度,提高代码的可读性和可...

    设计模式--模板方法模式java例子

    总的来说,模板方法模式是一种强大的设计工具,可以帮助我们构建结构清晰、易于维护的代码。在Java编程中,它常用于框架设计和代码结构的标准化,比如GUI框架、数据库访问框架等。理解并合理应用模板方法模式,能...

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

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

    模板方法模式与策略模式代码示范

    在软件设计模式中,模板方法模式(Template Method Pattern)和策略模式(Strategy Pattern)是两种常用的结构型设计模式,它们都是面向对象设计中行为模式的一种体现。这两种模式可以帮助我们更好地组织代码,提高...

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

    例如,我们可以通过以下代码来演示模板方法模式: ```cpp #include // 基础组件接口 class Component { public: virtual void operation() = 0; }; // 具体组件A class ConcreteComponentA : public Component ...

    模板方法模式例子

    模板方法模式的主要优点在于它实现了代码的复用,使得算法的结构保持一致,同时允许子类通过覆盖抽象方法来实现个性化的功能。此外,它还遵循开闭原则,即对扩展开放,对修改关闭,因为添加新的算法只需要创建一个新...

    c#代码介绍23种设计模式-14模板方法模式(附代码)

    模板方法使得子类可以不改变一个算法的结构前提下,重新定义算法的某些特定步骤,模板方法模式把不变行为搬到超类中,从而去除了子类中的重复代码。 2. 模板方法模式的实现 下面以生活中炒蔬菜为例来实现下模板方法...

    模板方法模式demo

    模板方法模式是一种行为设计模式,它允许在定义算法框架的同时,允许子类为一个或多个步骤提供具体的实现。这种模式通常用于代码复用,尤其是在有多种算法相似的情况下,通过抽象出公共部分,让子类专注于具体步骤的...

    设计模式的模板方法模式的例子

    2. 当想在已有的算法结构中插入新的步骤,但又不想修改已有代码时,模板方法模式提供了一个很好的解决方案。 例如,假设我们正在设计一个烹饪类库,其中有一个抽象的`烹饪过程`类,它定义了烹饪一道菜的基本步骤:...

    模板方法模式

    模板方法模式是一种设计模式,属于行为模式类别,它在面向对象设计中扮演着重要的角色。该模式定义了一个操作中的算法骨架,而...在处理重复性任务时,模板方法模式能有效减少代码冗余,提高代码的可维护性和可扩展性。

    工厂模式及模板方法模式深度思考

    结合标签“源码”和“工具”,我们可以理解这篇博客可能详细分析了这两种模式在实际项目或工具中的源码实现,探讨了如何通过工厂模式和模板方法模式优化代码结构,提高代码的复用性和可扩展性。文件名"template...

    java模式--模板模式实例代码

    模板模式是一种行为设计模式,它使你能在代码中定义一个操作的不同步骤,并让子类决定这些步骤如何执行。模板模式提供了创建算法结构的通用接口,而具体的实现则由子类来完成。这种模式允许在不修改原有代码的情况下...

    ios-iOS模板方法模式使用心得demo.zip

    通过模板方法模式,我们可以遵循“开闭原则”,即对扩展开放,对修改关闭,提高代码的可复用性和可维护性。 模板方法模式的核心在于抽象类,它定义了一个操作中的算法框架,而将一些步骤的实现延迟到子类中。模板...

Global site tag (gtag.js) - Google Analytics