• OC编程之道-创建对象之生成器模式


    生成器模式也叫建造者模式,一般是用来构造复杂对象的一种模式。client(客户)-director(指导者)-builder(构造者)-product(产品)。

    生成器模式能帮助构建设计部件与表现的各种组合的对象。否则知道构建对象所有细节的director可能会变成一个庞大的“神”类。但是在做应用的时候一般不会遇到如此复杂的类(请求?),只有在做游戏时,构造涉及各种特征的角色的时候,应该好好使用该模式。

    例子:

    一个追逐游戏,假定有两个角色,敌人和游戏者。这两个角色有一些基本trait,如力量strength、耐力stamina、智力intelligence、敏捷agility、攻击力aggressiveness。每一项特征都影响角色的防御protection和攻击power能力。

    类:

    (1)Character 

    方法:init

    属性:strength,stamina,intelligence,agility,aggressiveness,protection,power

    Character实际并不知道如何将自己构建成有意义的角色。所以需要CharacterBuilder来基于各个特征的关系,构建有意义的角色。

    (2)CharacterBuilder 抽象基类

    方法:创建Character实例,根据strength,stamina,intelligence,agility,aggressiveness构建Character实例的protection和power。

    引用:Character

    (3)StandardCharacterBuilder 具体类

    方法:重载抽象基类,按照比例关系设定正在构建的角色的防御和攻击值。

    (4)ChasingGame

    方法:- (Character *)createPlayer:(CharacterBuilder *)builder; - (Character *)createEnemy:(CharacterBuilder *)builder;

    (5)客户端代码

    (构造者)CharacterBuilder  *characterBuilder =[[StandardCharacterBuilder alloc]init];

    (指导者)ChasingGame *game = [[ChasingGame alloc]init];也可以通过characterBuilder来创建game,这样下面两个方法就直接是[game createPlayer]和[game createEnemy]

    (产品玩家)Character *player = [game createPlayer:characterBuilder];

    (产品敌人)Character *enemy = [game createEnemy:characterBuilder];

    生成器与抽象工厂模式的对比:

    生成器:构建复杂对象;以多个步骤构建对象;以多种方式构建对象;在构建过程的最后一步返回产品;专注一个特定产品;

    抽象工厂:构建简单或复杂对象;以单一步骤构建对象;以单一方式构建对象;立刻返回产品;强调一套产品;

  • 相关阅读:
    20174303刘金晖 Exp 8 Web基础
    2019-2020-2 网络对抗技术 20174303刘金晖 Exp7 网络欺诈防范
    20174303刘金晖 Exp6 MSF基础应用
    20174303刘金晖 Exp5 信息搜集与漏洞扫描
    20174303刘金晖 Exp4 恶意代码分析
    2019-2020-2 20174303刘金晖 Exp3 免杀原理与实践
    2019-2020-2 20174303刘金晖 Exp2 后门原理与实践
    2019-2020-2 20174303刘金晖 Exp1 PC平台逆向破解
    20174307周俊锴《网络对抗技术》Exp9 Web安全基础
    20174307周俊锴Exp8 Web基础
  • 原文地址:https://www.cnblogs.com/encoreMiao/p/5196147.html
Copyright © 2020-2023  润新知