设计模式之模板方法模式(c#)

模板方法模式

1 适用情况:

     当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理.

2 定义:

      定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.

      模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.

3 例子: (引用于《大话设计模式》)

       1) AbstractClass是抽象类,定义实现了一个模板方法,这个模板方法一般是一个具体方法.这就是一个顶级逻辑的骨架,而逻辑的组成步骤则在相应的抽象操作中,推迟到子类实现.

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

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

           

        2) ConcreteClass类继承抽象类AbstractClass,不同的ConcreteClass可以给出抽象方法的不同实现.

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實現");
        }
    }


       3)客户端调用如下:

    class Program
    {
        static void Main(string[] args)
        {
            AbstractClass c;

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

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

            Console.Read();
        }
    }


你可能感兴趣的:(C#,模板方法模式)