C#设计模式之Builder
来源:互联网 发布:网络兼职广告 编辑:程序博客网 时间:2024/05/17 21:47
名称:Builder
结构:
意图:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性 :
- 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
- 当构造过程必须允许被构造的对象有不同的表示时。
示例代码:
// Builder
namespace Builder_DesignPattern
{
using System;
// These two classes could be part of a framework,
// which we will call DP
// ===============================================
class Director
{
public void Construct(AbstractBuilder abstractBuilder)
{
abstractBuilder.BuildPartA();
if (1==1 ) //represents some local decision inside director
{
abstractBuilder.BuildPartB();
}
abstractBuilder.BuildPartC();
}
}
abstract class AbstractBuilder
{
abstract public void BuildPartA();
abstract public void BuildPartB();
abstract public void BuildPartC();
}
// These two classes could be part of an application
// =================================================
class ConcreteBuilder : AbstractBuilder
{
override public void BuildPartA()
{
// Create some object here known to ConcreteBuilder
Console.WriteLine("ConcreteBuilder.BuildPartA called");
}
override public void BuildPartB()
{
// Create some object here known to ConcreteBuilder
Console.WriteLine("ConcreteBuilder.BuildPartB called");
}
override public void BuildPartC()
{
// Create some object here known to ConcreteBuilder
Console.WriteLine("ConcreteBuilder.BuildPartC called");
}
}
/// <summary>
/// Summary description for Client.
/// </summary>
public class Client
{
public static int Main(string[] args)
{
ConcreteBuilder concreteBuilder = new ConcreteBuilder();
Director director = new Director();
director.Construct(concreteBuilder);
return 0;
}
}
}
namespace Builder_DesignPattern
{
using System;
// These two classes could be part of a framework,
// which we will call DP
// ===============================================
class Director
{
public void Construct(AbstractBuilder abstractBuilder)
{
abstractBuilder.BuildPartA();
if (1==1 ) //represents some local decision inside director
{
abstractBuilder.BuildPartB();
}
abstractBuilder.BuildPartC();
}
}
abstract class AbstractBuilder
{
abstract public void BuildPartA();
abstract public void BuildPartB();
abstract public void BuildPartC();
}
// These two classes could be part of an application
// =================================================
class ConcreteBuilder : AbstractBuilder
{
override public void BuildPartA()
{
// Create some object here known to ConcreteBuilder
Console.WriteLine("ConcreteBuilder.BuildPartA called");
}
override public void BuildPartB()
{
// Create some object here known to ConcreteBuilder
Console.WriteLine("ConcreteBuilder.BuildPartB called");
}
override public void BuildPartC()
{
// Create some object here known to ConcreteBuilder
Console.WriteLine("ConcreteBuilder.BuildPartC called");
}
}
/// <summary>
/// Summary description for Client.
/// </summary>
public class Client
{
public static int Main(string[] args)
{
ConcreteBuilder concreteBuilder = new ConcreteBuilder();
Director director = new Director();
director.Construct(concreteBuilder);
return 0;
}
}
}
- C#设计模式之Builder
- 设计模式之C#实现(二)---Builder
- 设计模式之C#实现(二)---Builder
- 设计模式之C#实现---Builder
- 设计模式之C#实现---Builder
- C#面向对象设计模式之:Builder
- C#设计模式之建造者(Builder)模式示例源代码
- C#设计模式之建造者(Builder)模式示例源代码
- C#设计模式之建造者(Builder)模式示例源代码
- C#设计模式之建造者模式(Builder Pattern)
- C#设计模式之建造者模式(Builder Pattern)
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 设计模式之Builder
- 软件项目管理.软件管理过程框架(生命周期阶段,过程中的制品)
- DirectX 入门例程
- C#2.0中的可空类型Nullable
- Eclipse中功能最强、最专业的插件-MyEclipse(附注册码)
- C#设计模式之Template Method
- C#设计模式之Builder
- windows 2000下"root/microsoftdns" 无效名称空间的解决方法
- WINCE5.0下开发winform应用程序一
- Windows下Linux开发环境设置--安装Cygwin及交叉编译工具链
- 关于 mutex 的调试实例
- C++、Java和C#的特性比较
- dwr介绍及概念
- 无刷新的四级联动下拉框实例(AjaxPro)
- 2007.06.29 9Fav就喜欢网发布最新版本 Version 1.5 - 首度公布应用API