搏客 Winning
After three days without programming, life becomes meaningless
posts - 46,  comments - 41,  trackbacks - 21
1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2、当构造过程必须允许被构造的对象有不同的表示时。简单点来说,它是为了将构建复杂对象的过程和它的部件解耦,从而达到将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
namespace DesignPattern.Builder
{
    
//生成器接口
    public interface IBuilder
    
{
        
void BuilderPartA();
        
void BuilderPartB();
        IProduct Product
{get;}
    }


    
//产品接口
    public interface IProduct
    
{
        
string PartA
        
{
            
set;
            
get;
        }


        
string PartB
        
{
            
set;
            
get;
        }

    }



    
//生成器
    public class ConcreteBuilder : IBuilder
    
{
        
private IProduct m_product;

        
public ConcreteBuilder()
        
{
            
this.m_product=new ConcreteProduct();
        }


        
public void BuilderPartA()
        
{
            
this.m_product.PartA="PartA Completed!\r\n";
        }


        
public void BuilderPartB()
        
{
            
this.m_product.PartB="PartB Completed!\r\n";
        }


        
public IProduct Product
        
{
            
get
            
{
                
return this.m_product;
            }

        }

    }


    
//产品
    public class ConcreteProduct : IProduct
    
{
        
private string m_partA,m_partB,m_partC;

        
public string PartA
        
{
            
set{this.m_partA=value;}
            
get{return this.m_partA;}
        }


        
public string PartB
        
{
            
set{this.m_partB=value;}
            
get{return this.m_partB;}
        }


        
public override string ToString()
        
{
            
return this.m_partA+this.m_partB;
        }

    }


    
//导演
    public class Director
    
{
        
private IBuilder builder;
        
public Director(IBuilder builder)
        
{
            
this.builder=builder;
        }


        
public void Construct()
        
{
            builder.BuilderPartA();
            builder.BuilderPartB();
        }

    }


    
//测试
    public class Consume
    
{
        
public static void Main()
        
{
            IBuilder builder
=new ConcreteBuilder();
            Director dir
=new Director(builder);
            dir.Construct();
            Console.Write(builder.Product.ToString());
        }

    }

}
posted on 2005-04-07 16:47 搏客 Winning 阅读(700) 评论(0)  编辑 收藏 网摘 所属分类: 架构设计

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接:
 




与我联系

搜索

 

常用链接

随笔分类

随笔档案

积分与排名

  • 积分 - 31280
  • 排名 - 1375

最新评论

阅读排行榜