中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

說(shuo)說(shuo)設計模式(shi)~建造者(zhe)模式(shi)(Builder)

返回目錄

建(jian)(jian)造者模(mo)式(shi)是我(wo)的(de)(de)(de)(de)"設計模(mo)式(shi)"里創建(jian)(jian)型模(mo)式(shi)里的(de)(de)(de)(de)最后一篇,這種模(mo)式(shi)在實(shi)現(xian)(xian)中(zhong),很多架構都用到(dao)了(le),如MVC,MVP,MVVM,它們都是有(you)建(jian)(jian)造者模(mo)式(shi)的(de)(de)(de)(de)精(jing)髓的(de)(de)(de)(de),即,創建(jian)(jian)與(yu)表現(xian)(xian)分享,我(wo)們的(de)(de)(de)(de)MVC何嘗(chang)不是,我(wo)們的(de)(de)(de)(de)MVVM又(you)何嘗(chang)不是呢,我(wo)們做軟件的(de)(de)(de)(de),換膚(fu)是常有(you)的(de)(de)(de)(de)事,其(qi)實(shi)換膚(fu)的(de)(de)(de)(de)實(shi)現(xian)(xian)不就是建(jian)(jian)造者模(mo)式(shi)最好的(de)(de)(de)(de)體現(xian)(xian)嗎,呵呵.

定義

將一個復雜對象的(de)構造與它的(de)表(biao)示(shi)分離,使同樣(yang)的(de)構建過(guo)程可以(yi)創建不(bu)同的(de)表(biao)示(shi),這樣(yang)的(de)設計模(mo)式被稱(cheng)為(wei)建造者模(mo)式。

何時能用到它?

1 當創建復雜對象的算法應該獨立于該對象的組成部分以及它們的裝配方式時。
2 當構造過程必須允許被構造的對象有不同表示時。

建造者模式的結構圖

建造者模式實現說明

1 Person:為一個主對象,它可能很大,很復雜。
2 Man:為Person下的一個分支,一個子類,本例中指男人對象
3 PersonDirector:為建造者模式中的指導者,它決定的創建產品的過程,順序
4 PersonBuilder:實現建造過程所需要的行為接口,PersonDirector中會用到它

5 ManBuilder:這(zhe)是一個具體的執(zhi)行(xing)者(zhe),它可能有多個,每個執(zhi)行(xing)者(zhe)負(fu)責自(zi)己的部(bu)分

建造者模式的C#實現

  public class Person
    {
        public string Name { get; set; }
        public short Gander { get; set; }
        public String Head { get; set; }
        public String Body { get; set; }
        public String Foot { get; set; }
        public void SetHead(string content) { Console.WriteLine(content); Head = content; }
        public void SetBody(string content) { Console.WriteLine(content); Body = content; }
        public void SetFoot(string content) { Console.WriteLine(content); Foot = content; }
        public override string ToString()
        {
            return string.Format("Head={0},Body={1},Foot={2}", Head, Body, Foot);
        }
    }
    public class Man : Person
    {
        public Man()
        {
            this.Gander = 1;
        }
    }
    public interface PersonBuilder
    {
        void buildHead();
        void buildBody();
        void buildFoot();
        Person buildPerson();
    }
    public class PersonDirector
    {
        public Person constructPerson(PersonBuilder pb)
        {
            pb.buildHead();
            pb.buildBody();
            pb.buildFoot();
            return pb.buildPerson();
        }
    }
    public class ManBuilder : PersonBuilder
    {
        Person person;
        public ManBuilder()
        {
            person = new Man();
        }
        public void buildBody()
        {
            person.SetBody("建造男人(ren)的身體");
        }
        public void buildFoot()
        {
            person.SetFoot("建造男人的腳");
        }
        public void buildHead()
        {
            person.SetHead("建造男(nan)人(ren)的頭");
        }
        public Person buildPerson()
        {
            return person;
        }
 
    }
}

下面是調用程序

    PersonDirector pd = new PersonDirector();
    Person person = pd.constructPerson(new ManBuilder());
    Console.WriteLine(person.ToString());

程序截圖

返回目錄

posted @ 2014-09-03 15:10  張占嶺  閱讀(1516)  評論(1)    收藏  舉報