共计 891 个字符,预计需要花费 3 分钟才能阅读完成。
建造者模式
将一个简单对象的构建与他的示意拆散,使得同样的构建过程能够创立不同的示意
如何了解建造者模式
建造者模式就是将建造简单对象的过程和组成对象的部件进行解耦。
案例
游戏公司设计游戏角色,其中人、兽、精灵三个种族。而每个种族又领有不同的英雄角色。所以角色设计应该具备以下特点:
- 角色根本属性统一
- 角色创立过程简单,不裸露创立细节
- 合乎开闭准则,能够随时新增角色
- 各个角色间彼此不受影响
这些特点很合乎工厂模式的实用特点,那用工厂模式就能够实现的案例为何要用建造者模式?次要是一个角色蕴含有头、手、脚、毛发 … 等许多部件,不同种族不同角色的部件有许多差别。如果应用工厂模式,那么角色的创立过程会与其各个部件耦合在一起,如果部件比拟多,那么角色的创立是比较复杂的。比方所以咱们须要将对象的创立过程与组成对象的部件进行解耦,也就是这一章的主题 — 建造者模式
类图(todo)
- 产品类
定义产品的根本属性
- 形象建造者
定义产品各个部件的构建标准
- 具体构建者
实现形象构建者的所有办法,返回一个具体的产品
- 导演类
负责封装已有模块的程序
- 隔离客户与生产过程
- 管制产品的生成过程
劣势
- 良好的封装性。产品类和建造类绝对固定,将次要逻辑封装到导演类能够获得比拟好的稳定性。
- 不需裸露产品外部细节,将产品自身与产品创立过程进行解耦。
- 精密管制产品创立过程。创立过程清晰,可能把控产品每个部件的创立过程。
- 良好的扩展性。新的需要只须要减少新的建造类就能够解决,合乎开闭准则。
局限性
- 建造者不适宜差异性很大的产品类。
- 产品外部变动简单,须要定义很多建造类来实现,会导致系统变得宏大。
应用场景
- 雷同的办法,不同的执行程序,产生不同的事件后果
- 一个对象具备多个部件,然而不同的对象的部件有所差别,也能够应用建造者模式
- 须要隔离简单对象的创立和应用,并使雷同创立过程能够创立不同的产品
建造者模式与工厂模式的区别
工厂模式职责 — 创建对象
- 将创立过程封装到工厂类,有工厂类提供最终产品。
建造模式职责 — 整机的拆卸以产生不同的对象
- 负责创立简单对象,须要对对象的部件进行拆卸以产生不同成果的对象,具备的建造过程交给指挥类。由指挥类负责将各个组件依照规定组建为产品。
正文完