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

来源:互联网 发布:zip解压软件下载mac版 编辑:程序博客网 时间:2024/06/15 05:36

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


//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();        }





3 1
原创粉丝点击