程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 設計模式:建造者模式

設計模式:建造者模式

編輯:C#基礎知識

建造者模式(Builder):將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

namespace Builder
{
    public class Product
    {
        IList<string> parts = new List<string>();
        public void Add(string part)
        {
            parts.Add(part);
        }
        public void Show()
        {
            Console.WriteLine("\n產品 創建 ---");
            foreach(string part in parts)
            {
                Console.WriteLine(part);
            }
        }
    }
    public abstract class Builder
    {
        public abstract void BuildPartA();
        public abstract void BuildPartB();
        public abstract Product GetResult();
    }
    public class ConcreteBuilder1 : Builder
    {
        private Product product = new Product();
        public override void BuildPartA()
        {
            product.Add("部件A");
        }

        public override void BuildPartB()
        {
            product.Add("部件B");
        }

        public override Product GetResult()
        {
            return product;
        }
    }
    public class ConcreteBuilder2 : Builder
    {
        private Product product = new Product();
        public override void BuildPartA()
        {
            product.Add("部件X");
        }

        public override void BuildPartB()
        {
            product.Add("部件Y");
        }

        public override Product GetResult()
        {
            return product;
        }
    }
    public class Director
    {
        public void Construct(Builder builder)
        {
            builder.BuildPartA();
            builder.BuildPartB();
        }
    }
}
View Code

測試代碼:

            Builder.Director director = new Builder.Director();
            Builder.Builder b1 = new Builder.ConcreteBuilder1();
            Builder.Builder b2 = new Builder.ConcreteBuilder2();
            director.Construct(b1);
            Builder.Product p1 = b1.GetResult();
            p1.Show();
            director.Construct(b2);
            Builder.Product p2 = b2.GetResult();
            p2.Show();
View Code
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved