假如有一种拼图可以拼贴成任何图形.那么我们只要生产出这种拼图的单个部件就可以了.那样就
会使复杂的图形变的简单化.也就是说我们只用设计每一个单个步骤就可以了.这样做的好处是什
么呢?很显然.我们在利用元件生产产品.而不需要直接生产一个巨大的产品.因为可能这些元件本
身就具有通用性.另外的好处是.来自与其本身的复杂性.因为要生产就必须要组装.而把生产和组
装分开来考虑.那么复杂性就会有所降低.也就是所谓的解偶.只做单一考虑那么这里就提供了两个
重要职能.一个是负责生产部件的Builder另外一个是负责组合的Director.这样就可以把负责的
产品解偶.
那么,现在我们来模拟RPG游戏中常出现的装备匹配问题.人物可以配备的装备为护手,护脚.胸甲
头盔.那么我们现在来分开实现,让后统一整合.
interface IBuilder {
void BuilderHand();
void BuilderFeet();
void BuliderHead();
void BuliderBody();
}
//可供生产的部件
abstract class AbstractPart{
string PartName;
}
class FeetPart:AbstractPart{
FeetPart(){
Console.Writeline("the Part is Feet");
}
}
class BodyPart:AbstractPart{
BodyPart(){
Console.Writeline("the Part is Body");
}
}
class HeadPart:AbstractPart{
HeadPart(){
Console.Writeline("the Part is Head");
}
}
class HandPart:AbstractPart{
HandPart(){
Console.Writeline("the Part is Hand");
}
}
//构造实际构造者
public class ArmBuilder : IBuilder{
AbstractPart Head,Feet,Body,Hand;
public void BuilderHand(){
Hand=new HandPart();
}
public void BuilderFeet(){
Feet=new FeetPart();
}
public void BuliderHead(){
Head=new HeadPart();
}
public void BuliderBody(){
Body=new BodyPart();
}
}
//整合者负责装配
public class Director {
private IBuilder builder;
public Director( IBuilder builder ) {
this.builder = builder;
}
public void construct() {
builder.BuildFoot();
builder.BuildHead();
builder.BuildBody();
builder.BuildHand();
}
}
public class Client
{
public static int Main(string[] args)
{
IBuilder builder = new ArmBuilder();
Director director = new Director(builder);
director.Construct();
return 0;
}
}