`
lvwenwen
  • 浏览: 954062 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

模板方法模式

阅读更多
概念回顾
  文章链接:http://gaojiewyh.iteye.com/blog/410276
1. 使用了继承,并肯定了这个继承的意义,就应该要成为子类的模板,所有重复的代码都应该要上升到父类去,而不是让每个子类都去重复。
2. 当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板来处理。
3. 定义一个操作中的算法的骨架,而将其中的一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤。

4. 在抽象父类(抽象模板)中定义虚方法,在子类中实现这个虚方法,通过对抽象父类实例化不同的子类从而调用不同的子类实现方法是模板方法的实现方式,在模板方法中注重的就是模板二字,尽可能把不变行为放在父类模板方法中,也就是包含子类实现父类虚方法的方法。
5. 抽象模板(抽象类),定义并实现了一个模板方法(就是包含自身定义的抽象方法的Public方法),这个模板方法一般是一个具体的方法,他给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。
6.子类实现父类所定义的一个或多个抽象方法,每个抽象模板都可以有任意多个子类与之对应,而每一个子类都可以给出这些抽象方法(抽象模板的组成步骤)不同的实现。
7. 模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现他的优势的,提供一个很好的代码复用平台。
8. 当过程从高层次上看是相同的,但有些步骤的实现可能不同,这时候,我们通常就应该要考虑用模板方法模式了
9. 当不变和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法模式把这些行为搬移到单一的地方(抽象父类的模板方法),这样就帮助了子类摆脱重复的不变行为的纠缠。
10.模板方法模式十分常用也比较容易理解,通常都会利用其提取公共行为到抽象类中

基础例题
using System;
using System.Collections.Generic;
using System.Text;

namespace 模板方法模式
{
    class Program
    {
        static void Main(string[] args)
        {
            AbstractClass c;

            c = new ConcreteClassA();
            c.TemplateMethod();

            c = new ConcreteClassB();
            c.TemplateMethod();

            Console.Read();

        }
    }

    abstract class AbstractClass
    {
        public abstract void PrimitiveOperation1();
        public abstract void PrimitiveOperation2();

        public void TemplateMethod()
        {
            PrimitiveOperation1();
            PrimitiveOperation2();
            Console.WriteLine("");
        }
    }

    class ConcreteClassA : AbstractClass
    {
        public override void PrimitiveOperation1()
        {
            Console.WriteLine("具体类A方法1实现");
        }
        public override void PrimitiveOperation2()
        {
            Console.WriteLine("具体类A方法2实现");
        }
    }

    class ConcreteClassB : AbstractClass
    {
        public override void PrimitiveOperation1()
        {
            Console.WriteLine("具体类B方法1实现");
        }
        public override void PrimitiveOperation2()
        {
            Console.WriteLine("具体类B方法2实现");
        }
    }

}
分享到:
评论

相关推荐

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

    ### 深入浅出设计模式之模板方法模式 #### 一、模板方法模式概述 设计模式是软件工程中一种非常重要的技术手段,它能够帮助我们解决常见的编程问题,并提高代码的可重用性、可扩展性和可维护性。模板方法模式是一...

    设计模式之模板方法模式

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

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

    ### 设计模式之模板方法模式解析 #### 一、引言 在软件开发过程中,我们经常面临这样的场景:有一些步骤是固定的,而某些步骤则可能因具体实现而异。为了解决这类问题,设计模式中引入了一种叫做“模板方法模式”的...

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

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

    模板方法模式案例代码

    模板方法模式是一种设计模式,属于行为设计模式,它在面向对象设计中扮演着重要的角色。这个模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法...

Global site tag (gtag.js) - Google Analytics