假如有一种拼图可以拼贴成任何图形.那么我们只要生产出这种拼图的单个部件就可以了.那样就
会使复杂的图形变的简单化.也就是说我们只用设计每一个单个步骤就可以了.这样做的好处是什
么呢?很显然.我们在利用元件生产产品.而不需要直接生产一个巨大的产品.因为可能这些元件本
身就具有通用性.另外的好处是.来自与其本身的复杂性.因为要生产就必须要组装.而把生产和组
装分开来考虑.那么复杂性就会有所降低.也就是所谓的解偶.只做单一考虑那么这里就提供了两个
重要职能.一个是负责生产部件的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; } }

|