首先我们先看一下“Builder”模式的定义:
指将一个复杂对象的构造和表示进行分离,使同样的构造过程创建不同的表示。将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。
“Builder”模式要点:
1.)Builder模式主要用于“分步骤构建一个复杂的对象”。在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则是经常变化。
2.)变化点在哪里就封装哪里,Builder模式主要在于应对“复杂对象各个部分”的频繁需求变动。其缺点在于难以应付“分步骤构建算法”的需求变动。
3.)AbstractFactory模式解决“系列对象”的需求变化,Builder模式解决“对象部分”的需求变化。
Builder模式//将一个“房子”作为复杂对象,将对其分离出“墙”,“门”,“床”,“屋顶”,“地板”等对象。
//抽象
public abstract class House{}
public abstract class Door{}
public abstract class Windows { }
public abstract class Wall { }
public abstract class Floor { }
public abstract class HouseCwiling { }
public abstract class Builder{
public abstract void BuildDoor();
public abstract void BuildWindows();
public abstract void BuildWall();
public abstract void BuildFloor();
public abstract void BuildHouseCeiling();
public abstract House GetHouse();
}
//继承(封装变化点)
public class RomanHouse : House { }
public class RomanDoor : Door { }
public class RomanWindows : Windows { }
public class RomanWall : Wall { }
public class RomanFloor : Floor { }
public class RomanHouseCwiling : HouseCwiling { }
public class RomanBuilder : Builder{
public override void BuildDoor() { }
public override void BuildFloor() { }
public override void BuildHouseCeiling() { }
public override void BuildWall() { }
public override void BuildWindows() { }
public override House GetHouse(){
return new RomanHouse();
}
}
//动态调用
class BuilerApp{
public void Main(){
string assemblyName = ConfigurationSettings.AppSettings["BuildAssemblyName"];
string buildName = ConfigurationSettings.AppSettings["BuildName"];
Assembly assembly = Assembly.Load(assemblyName);
Type t = assembly.GetType(buildName);
Builder build =(Builder) Activator.CreateInstance(t);
House house = GameManager.GetHouse(build);
}
}
网友评论