设计模式:02 Builder(生成器)

简要说明

生成器模式首先定义一个生成器接口,接口中定义了生成一个产品(或逻辑上可看做整体的产品)各个部分的方法及返回这个产品的方法。不同的生成器可以封装不同的生成算法。客户类在构造函数中通过生成器生成需要的这个产品。生成器适用于待构建对象十分复杂,并根据具体情况存在不同构建算法的场合,使用生成器模式后复杂对象的构建过程与使用过程分离。

结构类图

在这里插入图片描述

结构示例代码

/**************************************************
*

  • Design Pattren Quick Start
  • 02 Builder - 生成器

**************************************************/
namespace DesignPatternQuickStart.Builder
{
///
/// 含有不同模块的产品
///
class Product
{
public int PartA { get; set; }
public object PartB { get; set; }
public string PartC { get; set; }
}

///  
/// 生成器接口 
///  
interface IBuilder 
{ 
    void BuildPartA(int partA); 
    void BuildPartB(object partB); 
    void BuildPartC(string partC); 
    Product GetResult(); 
} 

///  
/// 具体的生成器 
///  
class Builder : IBuilder 
{ 
    protected Product _product; 

    public Builder() 
    { 
        this._product = new Product(); 
    } 

    //此处可以使用任意复杂的构造算法构造不同模块 
    public void BuildPartA(int partA) 
    { 
        this._product.PartA = partA; 
    } 

    public void BuildPartB(object partB) 
    { 
        this._product.PartB = partB; 
    } 

    public void BuildPartC(string partC) 
    { 
        this._product.PartC = partC; 
    } 

    public Product GetResult() 
    { 
        return this._product; 
    } 
} 

///  
/// 生成器的客户类 
///  
class Client 
{ 
    protected Product _product; 

    public Client() 
    { 
        IBuilder buider = new Builder(); 
        buider.BuildPartA(100); 
        buider.BuildPartB(null); 
        buider.BuildPartC("abc"); 

        this._product = buider.GetResult(); 
    } 
} 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值