学习心得:设计模式之Builder模式

实例如下(例子是在网上拷的)

using System;
using System.Collections;

// "Director"
class Director
{
  
// Methods
  public void Construct( Builder builder )
  
{
    builder.BuildPartA();
    builder.BuildPartB();
  }

}


// "Builder"
abstract class Builder
{
  
// Methods
  abstract public void BuildPartA();
  
abstract public void BuildPartB();
  
abstract public Product GetResult();
}


// "ConcreteBuilder1"
class ConcreteBuilder1 : Builder
{
  
// Fields
  private Product product;

  
// Methods
  override public void BuildPartA()
  
{
    product 
= new Product();
    product.Add( 
"PartA" );
  }


  
override public void BuildPartB()
  
{
    product.Add( 
"PartB" );
  }


  
override public Product GetResult()
  
{
    
return product;
  }

}


// "ConcreteBuilder2"
class ConcreteBuilder2 : Builder
{
  
// Fields
  private Product product;

  
// Methods
  override public void BuildPartA()
  
{
    product 
= new Product();
    product.Add( 
"PartX" );
  }


  
override public void BuildPartB()
  
{
    product.Add( 
"PartY" );
  }


  
override public Product GetResult()
  
{
    
return product;
  }

}


// "Product"
class Product
{
  
// Fields
  ArrayList parts = new ArrayList();
 
  
// Methods
  public void Add( string part )
  
{
    parts.Add( part );
  }


  
public void Show()
  
{
    Console.WriteLine( 
" Product Parts -------" );
    
foreachstring part in parts )
      Console.WriteLine( part );
  }

}


/**//// <summary>
/// Client test
/// </summary>

public class Client
{
  
public static void Main( string[] args )
  
{
    
// Create director and builders
    Director director = new Director( );

    Builder b1 
= new ConcreteBuilder1();
    Builder b2 
= new ConcreteBuilder2();

    
// Construct two products
    director.Construct( b1 );
    Product p1 
= b1.GetResult();
    p1.Show();

    director.Construct( b2 );
    Product p2 
= b2.GetResult();
    p2.Show();
  }

}

心理体会:builder模式将一个复杂对象分成了四个模块

Builder:为创建Product对象的各个部件指定抽象接口,定义Product对象的行为规范
ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。
  提供每个部件的具体实现
Director:构造一个使用Builer接口的对象,作用在于实现系统的复杂的逻辑业务,逻辑业务是要按顺序,按流程操作的!
Product:表示被构造的复杂对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值