美文网首页
一、设计模式(构建模式)——03建造模式与原型模式

一、设计模式(构建模式)——03建造模式与原型模式

作者: GameObjectLgy | 来源:发表于2021-07-06 11:04 被阅读0次
    建造者模式

    建造型模式用于创建过程稳定,但配置多变的对象。

    using System;
    using System.Collections.Generic;
    
    /// <summary>
    /// 建造者模式的演变
    /// 省略了指挥者角色和抽象建造者角色
    /// 此时具体建造者角色扮演了指挥者和建造者两个角色
    /// </summary>
    public class Builder
    {
        // 具体建造者角色的代码
        private readonly Product _product = new Product();
        public void BuildPartA()
        {
            _product.Add("PartA");
        }
        public void BuildPartB()
        {
            _product.Add("PartB");
        }
        public Product GetProduct()
        {
            return _product;
        }
        // 指挥者角色的代码
        public void Construct()
        {
            BuildPartA();
            BuildPartB();
        }
    }
    
    /// <summary>
    /// 产品类
    /// </summary>
    public class Product
    {
        // 产品组件集合
        private readonly IList<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 + "已装好");
            }
    
            Console.WriteLine("产品组装完成");
        }
    }
    
    // 此时客户端也要做相应调整
    class Client
    {
        private static Builder _builder;
        static void Main(string[] args)
        {
            _builder = new Builder();
            _builder.Construct();
            Product product = _builder.GetProduct();
            product.Show();
            Console.Read();
        }
    }
    

    建造模式的实现要点:

    在建造者模式中,指挥者是直接与客户端打交道的,指挥者将客户端创建产品的请求划分为对各个部件的建造请求,再将这些请求委派到具体建造者角色,具体建造者角色是完成具体产品的构建工作的,却不为客户所知道。
    建造者模式主要用于“分步骤来构建一个复杂的对象”,其中“分步骤”是一个固定的组合过程,而复杂对象的各个部分是经常变化的(也就是说电脑的内部组件是经常变化的,这里指的的变化如硬盘的大小变了,CPU由单核变双核等)。
    产品不需要抽象类,由于建造模式的创建出来的最终产品可能差异很大,所以不大可能提炼出一个抽象产品类。
    在前面文章中介绍的抽象工厂模式解决了“系列产品”的需求变化,而建造者模式解决的是 “产品部分” 的需要变化。
    由于建造者隐藏了具体产品的组装过程,所以要改变一个产品的内部表示,只需要再实现一个具体的建造者就可以了,从而能很好地应对产品组成组件的需求变化。
    转载自:https://www.cnblogs.com/guyun/p/6183795.html

    原型模式

    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
    这样子在想获得和原来对象一样的对象时,直接通过拷贝即可,而不需要重复去构建一个对象。
    需要注意的地方是,这里的系统自带的拷贝只是一个浅拷贝,想要深度拷贝,还得需要自己实现。

    相关文章

      网友评论

          本文标题:一、设计模式(构建模式)——03建造模式与原型模式

          本文链接:https://www.haomeiwen.com/subject/urgiultx.html