C# - 设计模式 - 建造者模式
2021-04-20 23:26
阅读:652
建造者模式
问题场景
我想买一件产品,这件产品需要特殊定制,厂家制造产品的细节我并不想知道,只希望能得到一个成品。
总结模式
将制造产品的内部细节封闭起来,对外不可见,封闭细节应注意权限修饰符的应用,也即用户调用不了制造的方法,由建造者实现细节并返回客户期望的结果,
示例代码
namespace AppCUI
{
//建造者抽象
public abstract class AbstractBuilder
{
//设为protected,制造细节对外不可见,做到封装
protected abstract void Part1( );
protected abstract void Part2( );
//只暴露获取产品的方法
public abstract Product GetProduct( );
}
//产品
public class Product
{
private Liststring> list=new Liststring>();
//设为internal,这样Add方法对当前命名空间外不可见,做到封装
internal void Add(string part)
{
list.Add(part);
}
public void Print( )
{
Console.WriteLine( "已装配完成" );
}
}
//建造者实现
//封装制造细节
public class Builder: AbstractBuilder
{
private Product Product { get; set; }
public Builder( )
{
Product = new Product( );
}
protected override void Part1( )
{
Product.Add( "part1" );
}
protected override void Part2( )
{
Product.Add( "part2" );
}
public override Product GetProduct( )
{
Part1( );
Part2( );
return Product;
}
}
public class Programe
{
static void Main( string[] args )
{
AbstractBuilder abstractBuilder = new Builder( );
Product product= abstractBuilder.GetProduct( );
product.Print( );
}
}
}
{
//建造者抽象
public abstract class AbstractBuilder
{
//设为protected,制造细节对外不可见,做到封装
protected abstract void Part1( );
protected abstract void Part2( );
//只暴露获取产品的方法
public abstract Product GetProduct( );
}
//产品
public class Product
{
private Liststring> list=new Liststring>();
//设为internal,这样Add方法对当前命名空间外不可见,做到封装
internal void Add(string part)
{
list.Add(part);
}
public void Print( )
{
Console.WriteLine( "已装配完成" );
}
}
//建造者实现
//封装制造细节
public class Builder: AbstractBuilder
{
private Product Product { get; set; }
public Builder( )
{
Product = new Product( );
}
protected override void Part1( )
{
Product.Add( "part1" );
}
protected override void Part2( )
{
Product.Add( "part2" );
}
public override Product GetProduct( )
{
Part1( );
Part2( );
return Product;
}
}
public class Programe
{
static void Main( string[] args )
{
AbstractBuilder abstractBuilder = new Builder( );
Product product= abstractBuilder.GetProduct( );
product.Print( );
}
}
}
C# - 设计模式目录
评论
亲,登录后才可以留言!