必赢亚洲手机app下载


乔布斯(乔布斯(Jobs))

可是扩展标记语言XML

Pattern

4个角色:指挥者(Director),建造者(Builder),具体建造者(ConcreteBuilder),产品(Product)
         产品:需要创制的靶子产品
        
具体建造者:创制产品的实例并且实现建造者五个点子对活举行装配
        
建造者:本质也抽象类,里面的架空方法供具体建造者重写,注脚产品之援
         指挥者:调用建造者抽象类与该方法

      
兑现思路:客户端创建一个协会者,并且实例化需要之制品的现实建造者,然后指挥者调用具体建造者的实例即将产品生产出来。

 类图:

        苹果电脑 1

       
使用场景:在Silverlight中我们得生产一样列多尽的输入框+TextBlock的整合,不过那么些输入框的类不同,有一些不得不输入256单字符,有的只可以输入20只字符,还有的凡多行的,有的是单行的输入框。这多少个输入框的类型是稳定的,不过或许用户从定义输入框的时大家其它次第和个此外转移数量不知晓。

       
分析:在这边产品是一直的,有A,B,C,D,E,F六种输入框+TextBlock,用户可能坏成的动静是A,A,C,C,B,B,C、也或是B,C,D,B,C,F。这里我们用建造者形式,这两种植输入框基本上都差不多,都是TextBlock+TextBox的格局。不过只是输入数量以及是否多行是未自然的,那么我们贯彻AConcreteBuilder,BConcreteBuilder,CConcreteBuilder,DConcreteBuilder,EConcreteBuilder,FConcreteBuilder等大多单有血有肉建造者,然后于建造者中单待少独主意分别实例化产品,并且对产品的性质(可输入字符数、是否可多行)举行安装,然后再度用户用调用什么产品的时候,使用指挥者调用想使的ConcreteBuilder具体建造者即可。

        下边大家盖一个电脑产品生产的实例来具体看看Builder
Pattern是怎下的:

        一、产品角色

//产品
class
Computer
{
private string
m_CompName;
private string
m_MemorySize;
private string
m_DiskSize;

/// <summary>
/// 电脑名称
/// </summary>
public
string CompName
{
get { return
m_CompName; }
set { m_CompName = value;
}
}

/// <summary>
/// 内存大小
/// </summary>
public
string MemorySize
{
get { return
m_MemorySize; }
set { m_MemorySize = value;
}
}

/// <summary>
/// 硬盘大小
/// </summary>
public
string DiskSize
{
get { return
m_DiskSize; }
set { m_DiskSize = value;
}
}
/// <summary>
/// 展现产品的音信
/// </summary>
public
void ShowComputerInfo()
{
Console.WriteLine(“————————“);
Console.WriteLine(“电脑名称:”

  • CompName);
    Console.WriteLine(“内存大小:”
  • MemorySize);
    Console.WriteLine(“硬盘大小:”
  • DiskSize);
    }
    }

        二、建造者角色

//建造者
定义建造产品之空洞方法和产品之援
abstract
class ComputerBuilder
{
private Computer computerInstance;

/// <summary>
/// 重回建立之电脑产品实例
/// </summary>
public
Computer ComputerInstance
{
get { return
computerInstance; }
苹果电脑,set { computerInstance=value; }
}

/// <summary>
/// 创设电脑名称
/// </summary>
abstract
public void
CreateCompName();

/// <summary>
/// 成立电脑内存
/// </summary>
abstract
public void
CreateCompMemory();

/// <summary>
/// 制造电脑硬盘
/// </summary>
abstract
public void
CreateCompDisk();

}

        三、具体建造者角色

//具体建造者创造苹果电脑
class
AppleConcreteBuilder : ComputerBuilder
{

public override
void CreateCompName()
{
ComputerInstance = new
Computer();
ComputerInstance.CompName =
“苹果电脑”;
}

public override
void CreateCompMemory()
{
ComputerInstance.MemorySize =
“4G”;
}

public override
void CreateCompDisk()
{
ComputerInstance.DiskSize =
“500G”;
}
}

//具体建造者创制Lenovo电脑
class
DellConcreteBuilder : ComputerBuilder
{

public override
void CreateCompName()
{
ComputerInstance = new
Computer();
ComputerInstance.CompName =
“雷蛇电脑”;
}

public override
void CreateCompMemory()
{
ComputerInstance.MemorySize =
“2GB”;
}

public override
void CreateCompDisk()
{
ComputerInstance.DiskSize =
“320GB”;
}
}

//具体建造者创建Lenovo电脑
class
HpConcreteBuilder : ComputerBuilder
{

public override
void CreateCompName()
{
ComputerInstance = new
Computer();
ComputerInstance.CompName =
“ASUS电脑”;
}

public override
void CreateCompMemory()
{
ComputerInstance.MemorySize =
“1GB”;
}

public override
void CreateCompDisk()
{
ComputerInstance.DiskSize =
“160GB”;
}
}

//具体建造者创制IBM电脑
class
IBMConcreteBuilder : ComputerBuilder
{

public override
void CreateCompName()
{
ComputerInstance = new
Computer();
ComputerInstance.CompName =
“IBM电脑”;
}

public override
void CreateCompMemory()
{
ComputerInstance.MemorySize =
“2G”;
}

public override
void CreateCompDisk()
{
ComputerInstance.DiskSize =
“1000G”;
}
}

        四、指挥者角色

//指挥者
class
CreateDirector
{
/// <summary>
/// 调用建造者抽象方法为生成品
/// </summary>
/// <param
name=”compBuilder”></param>
public
void CreateComputer(ComputerBuilder compBuilder)
{
compBuilder.CreateCompName();
compBuilder.CreateCompMemory();
compBuilder.CreateCompDisk();
}
}

       
如用源码请点击 BuilderPattern.zip
下载。

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图