创建型设计模式。对象的构建过程如果相对稳定,对象内的对象频繁变化,可使用此模式。
如,装修房子的过程稳定,先铺地板,然后天花板,最后门和窗;然地板,天花板,门,窗这些东西根据装修要求不同选用不同的材料。
抽象类(房子对象以及相关对象和方法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public abstract class Floor {} public abstract class Ceiling {} public abstract class Window {} public abstract class Door {} public abstract class House {} public abstract class BuildHouse { public Floor f; public Ceiling c; public Window w; public Door d; public abstract void BuildFloor(); public abstract void BuildCeiling(); public abstract void BuildWindow(); public abstract void BuildDoor(); public abstract House GetHouse(); }
|
实现类(具体类对象,房子的一个实现类)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public class MyFloor:Floor {} public class MyCeiling:Ceiling {} public class MyWindow:Window {} public class MyDoor:Door {} public class MyHouse:House {} public class MyBuildHouse:BuildHouse { public override void BuildFloor() { f = new MyFloor(); } public override void BuildCeiling() { c = new MyCeiling(); } ... ... public override House GetHouse() { return new MyHouse(); } }
|
构建过程类(房子构建过程,稳定部分)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class HouseManager { public House CreateHouse(BuildHouse b) { //一地板,一天花板,两个窗,一个门(相对稳定) b.BuildFloor(); b.BuildCeiling(); b.BuildWindow(); b.BuildWindow(); b.BuildDoor(); return b.GetHouse(); } }
|
客户端调用过程
1 2 3 4 5
| void main() { HouserManager hm = new HouserManager(); Houser h = hm.CreateHouser(new MyBuildHouse()); }
|