iOS 设计模式的应用 ⑤ 建造者模式
选择建造自己房子的人会把工程外包给承包商。单一承包商不能建造整个房子,他将其分解为几个部分,然后转包给几个实际的建筑商。客户告诉承包商房子里都有什么,然后承包商协调指导各房屋建筑商,决定需要做什么,应该如何建造。将建造过程分解为 客户-指导者(承包商)- 建造者(建筑商)的关系,过程更容易管理与复用,针对此类关系的设计模式称为 建造者模式 。
有时,构建某些对象有多种不同方式,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现。建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。
传统建造者模式有4个角色。
以假想的游戏角色为例,假定有两个类型的角色——敌人和游戏者,角色具有共同的基本特征,如力量,耐力,智力、敏捷和攻击力。每一个特征都影响着角色的防御( protection )和攻击( Power )能力,因此我们定义一个角色类 Character :
接着,我们定义抽象的角色构建者 CharacterBuilder :
StandardCharacterBuilder 是具体的 CharacterBuilder 。在这里,力量和耐力与防御和攻击成正比,智力和敏捷与防御成正比,与攻击成反比。根据不同特征因子实际构建角色。构建过程结束后, StandardCharacterBuilder 将返回 Character 的实例。
接下来,定义指导者 ChasingGame 类,其提供了创建游戏者和敌人角色的方法。
最后,只需要通过 StandardCharacterBuilder 和 ChasingGame 就可以创建相应的游戏和敌人角色。
建造者模式能帮助构建涉及部件与表现的各种组合的对象。没有这一模式,知道构建对象所需细节的 Director 可能最终会变成一个庞大的类,带有无数用于构建同一个类的各种表现的内嵌算法。
2024-03-18 广告