zoukankan      html  css  js  c++  java
  • 设计模式之—建造者模式<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

    测试结果

    要么忍,要么狠,要么滚!
  • 相关阅读:
    段间跳转之陷阱门
    段间跳转之中断门
    段间跳转之调用门
    代码段段间跳转流程
    Window内核学习之保护模式基础
    回顾2020,展望2021
    内存管理之堆
    Windows进程间通讯(IPC)----信号量
    线程本地存储(动态TLS和静态TLS)
    Windows进程间通讯(IPC)----套接字
  • 原文地址:https://www.cnblogs.com/zxd543/p/3246731.html
Copyright © 2011-2022 走看看