美文网首页
浅谈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