天天看點

設計模式--建造者模式,與生活結合

一、個人了解

            1、解決複雜對象的建立

            2、同樣的建構過程有不同的表現

            3、處理繁瑣而且順序不太重要的事情

二、實際運用

             1、手機組裝

             2、個人每天的生活,吃飯、睡覺、打掃衛生

三、代碼

using System;
using System.Collections.Generic;
using System.Text;

namespace ModeDemo.Builder
{
    public abstract class Builder
    {
        public abstract void BuildPatrA();
        public abstract void BuildPatrB();

        public abstract Product GetResult();
    }
}      
using System;
using System.Collections.Generic;
using System.Text;

namespace ModeDemo.Builder
{
    public class ConcreateBuilder1:Builder
    {
        private Product product = new Product();

        public override void BuildPatrA()
        {
            product.Add("PartA");
        }

        public override void BuildPatrB()
        {
            product.Add("PartA");
        }

        public override Product GetResult()
        {
            return product;
        }
    }
}      
using System;
using System.Collections.Generic;
using System.Text;

namespace ModeDemo.Builder
{
    public class ConcreateBuilder2:Builder
    {
        private Product product = new Product();

        public override void BuildPatrA()
        {
            product.Add("partX");
        }

        public override void BuildPatrB()
        {
            product.Add("partY");
        }

        public override Product GetResult()
        {
            return product;
        }
    }
}      
using System;
using System.Collections.Generic;
using System.Text;

namespace ModeDemo.Builder
{
    public class Director
    {
        public void Construct(Builder builder)
        {
            builder.BuildPatrA();
            builder.BuildPatrB();
        }
    }
}      
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace ModeDemo.Builder
{
    public class Product
    {
        ArrayList parts = new ArrayList();

        public void Add(string part)
        {
            parts.Add(part);
        }

        public void Show()
        {
            Console.WriteLine("\n Product Parts ------------");
            foreach (string part in parts)
            {
                Console.WriteLine(part);
            }
        }
    }
}      
Builder.Director director = new ModeDemo.Builder.Director();
            Builder.Builder b1 = new Builder.ConcreateBuilder1();
            Builder.Builder b2 = new Builder.ConcreateBuilder2();

            director.Construct(b1);
            Builder.Product p1 = b1.GetResult();
            p1.Show();

            director.Construct(b2);
            Builder.Product p2 = b2.GetResult();
            p2.Show();

            Console.Read();      
ide