1. 程式人生 > >設計模式-模板方法模式

設計模式-模板方法模式

設計模式 模板方法模式

public abstract class Moban { public string name; public Moban(string _name) { this.name = _name; } private void showSiteName() { Console.WriteLine("這是{0}網站",this.name); } private void createHead() { Console.WriteLine("這裏是頁頭"); } private void createFoot() { Console.WriteLine("這裏是頁腳"); } public abstract void createContent();//內容區 public void createHtml() { showSiteName(); createHead(); createContent(); createFoot(); Console.ReadLine(); } } public class SiteA : Moban { public SiteA(string _name) : base(_name) { } public override void createContent() { Console.WriteLine("我是{0}網站的內容區:阿裏巴巴和騰訊今天合並了",this.name); } } public class SiteB : Moban { public SiteB(string _name) : base(_name) { } public override void createContent() { Console.WriteLine("我是{0}網站的內容區:馬雲和馬化騰不得不說的故事", this.name); } } //前端: static void Main(string[] args) { Moban sa = new SiteA("百家論壇"); Moban sb = new SiteB("天涯論壇"); sa.createHtml(); sb.createHtml(); }

總結:模板方法模式貌似最常用,沒什麽好說的,用原型模式改造下。

public class MobanPrototype:ICloneable
    {
        public string name { get; set; }
        public MobanPrototype()
        {            
        }
        private void showSiteName()
        {
            Console.WriteLine("這是{0}網站", this.name);
        }
        private void createHead()
        {
            Console.WriteLine("這裏是頁頭");
        }
        private void createFoot()
        {
            Console.WriteLine("這裏是頁腳");
        }
        private void createContent(string content)//內容區
        {
            Console.WriteLine(content);
        }

        public void createHtml(string content)
        {
            showSiteName();
            createHead();
            createContent(content);
            createFoot();
            Console.ReadLine();
        }

        public object Clone()
        {
            return (MobanPrototype)this.MemberwiseClone();
        }
    }
        //前端
        static void Main(string[] args)
        {
            //Moban sa = new SiteA("百家論壇");
            //Moban sb = new SiteB("天涯論壇");
            //sa.createHtml();
            //sb.createHtml();

            MobanPrototype mobanPrototype = new MobanPrototype();
            MobanPrototype siteA = (MobanPrototype)mobanPrototype.Clone();
            MobanPrototype siteB = (MobanPrototype)mobanPrototype.Clone();

            siteA.name = "百家論壇";            
            siteB.name = "天涯論壇";
            siteA.createHtml(string.Format("我是{0}網站的內容區:阿裏巴巴和騰訊今天合並了", siteA.name));
            siteB.createHtml(string.Format("我是{0}網站的內容區:馬雲和馬化騰不得不說的故事", siteB.name));

        }

設計模式-模板方法模式