美文网首页
浅谈GoF23设计模式-“Builder”模式

浅谈GoF23设计模式-“Builder”模式

作者: 浅谈码生活 | 来源:发表于2020-08-07 16:16 被阅读0次

首先我们先看一下“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);

}

}

相关文章

网友评论

      本文标题:浅谈GoF23设计模式-“Builder”模式

      本文链接:https://www.haomeiwen.com/subject/nvnxdktx.html