• 设计模式之—建造者模式<Builder Pattern>


    建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建构成可以创建不同的表示。即将建造代码宇表示代码分离

    以构建产品为例:

    产品类(Product)

    namespace Builder_Pattern.CLASS
    {
        class Product
        {
            List<string> parts = new List<string>();
            public void Add(string part)
            {
                parts.Add(part);
            }
    
            public void Show()
            {
                Console.WriteLine("创建产品----------");
                foreach (string part in parts)
                {
                    Console.WriteLine(part);
                }
            }
        }
    }
    View Code

    抽象建造类(Builder)

    namespace Builder_Pattern.CLASS
    {
        abstract class Builder
        {
            public abstract void BuildPartA();
            public abstract void BuildPartB();
            public abstract Product GetREsult();
        }
    }
    View Code

    具体建造类1(ConCreateBuilder1):继承于抽象建造类(Builder)

    namespace Builder_Pattern.CLASS
    {
        class ConCreateBuilder1: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;
            }
        }
    }
    View Code

    具体建造类2(ConCreateBuilder1):继承于抽象建造类(Builder)

    namespace Builder_Pattern.CLASS
    {
        class ConCreateBuilder2:Builder
        {
            public Product product = new Product();
            public override void BuildPartA()
            {
                product.Add("部件X");
            }
            public override void BuildPartB()
            {
                product.Add("部件Y");
            }
            public override Product GetREsult()
            {
                return product;
            }
        }
    }
    View Code

    指挥者类(Director)

    namespace Builder_Pattern.CLASS
    {
        class Director
        {
            public void ConCreateBuild(Builder builder)
            {
                builder.BuildPartA();
                builder.BuildPartB();
            }
        }
    }
    View Code

    测试类(TestMain)

    namespace Builder_Pattern
    {
        class TestMain
        {
            static void Main(string[] args)
            {
                Director dir = new Director();
                Builder b1 = new ConCreateBuilder1();
                Builder b2 = new ConCreateBuilder2();
    
                dir.ConCreateBuild(b1);
                Product product = b1.GetREsult();
                product.Show();
    
                dir.ConCreateBuild(b2);
                Product product1 = b2.GetREsult();
                product1.Show();
    
                Console.ReadLine();
            }
        }
    }
    View Code

    测试结果

    要么忍,要么狠,要么滚!
  • 相关阅读:
    python基础12-语法
    基础篇-内置函数(常用)
    中级篇-内置函数 (map/filter/reduce)
    python 基础11-递归
    python 基础10-函数、变量
    python 基础9-拼接
    redis
    python--os模块
    函数return多个值
    python--文件读写
  • 原文地址:https://www.cnblogs.com/zxd543/p/3246731.html
Copyright © 2020-2023  润新知