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

建造者模式

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

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

原型模式

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容