【软考】设计模式-模板方法

模板方法的主要思想就是把所有相同的功能都写在父类里,需要有变化的方法在父类中写成虚方法,在子类中重写虚方法。所以模板方法提供了一个很好的代码复用平台。


//abstractclass是抽象类,其实也就是一抽象模板,定义并实现了一个模板方法,这个模板方法是一个具体方法,
    //他给出了一个顶级逻辑的骨架,而路基的组成步骤在相应的抽象操作中,推迟到子类实现,顶级逻辑也有可能调用一些具体方法。
    abstract class AbstractClass
    {
        public abstract void PrimitiveOperation1();  //一些抽象行为,放到子类去实现。
        public abstract void PrimitiveOperation2();
        public void TemplateMethod()  //模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作。
        {
            PrimitiveOperation1();
            PrimitiveOperation2();
            Console.WriteLine("");
        }
    }

 //oncreteclass,实现父类所定义的一个或多个抽象方法,每一个abstractclass都可以有任意多个concreteclass与之对应,而每一个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实现");
        }
    }

主方法调用:

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

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

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

            Console.Read();
        }



【软考】设计模式-模板方法_第1张图片

你可能感兴趣的:(-----【大话模式】,-----【软考之路】,软考带你飞,大话设计模式)