iOS设计模式之Strategy(策略模式)

作者: 大兵布莱恩特 | 来源:发表于2018-06-14 20:43 被阅读43次

    策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

    image.png image.png

    有点类似于我们玩是 CS 枪战,不管你用 1 机枪 2 手枪 3小刀 4 手雷 ,到角色身上的永远是一个字干,点击鼠标左键,老夫写代码上去就是一梭子,不管你怎么实现的.

    image.png

    接下来我将会用 C++ 代码去模拟我们玩 CS 过程中 武器 (策略) 角色之间的关系

    
    #include <iostream>
    
    using namespace std;
    
    ///武器类
    class Weapon {
    public:
        virtual void use() = 0;
    };
    ///小刀类
    class Knife : public Weapon {
    public :
        void use() {
            cout<<"use knife kill you" << endl;
        }
    };
    ///机枪类
    class Gun : public Weapon {
    public:
        void use() {
            cout<<"use gun kill you"<<endl;
        }
    };
    
    ///角色类
    class Sprite {
    
    public:
        ///人物一开始就有把抢
        Sprite(Weapon *we) {
            _weapon = we;
        }
        ///切换武器
       void setWeapon(Weapon *we) {
           _weapon = we;
       }
       ///老夫写代码上去就是一梭子 一个字干
       void fight() {
           _weapon->use();
       }
    
     private :
       Weapon *_weapon;
    };
    
    int main(int argc, char *argv[])
    {
    
        Knife k;
        Gun g;
        Sprite sp = Sprite(&g);
        sp.fight();
    
        sp.setWeapon(&k);
        sp.fight();
    
        sp.setWeapon(&g);
        sp.fight();
    
    
        return 0;
    }
    
    
    
    
    image.png

    iOS 中NSArray的 sortedArrayUsingComparator 排序方法其实就是一种策略模式

    image.png

    定义了一个公共的接口, 根据业务场景需要 传不同的策略进来,就会实现升序 ,降序 ,甚至是逆置数组元素等不同的操作.

    相关文章

      网友评论

        本文标题:iOS设计模式之Strategy(策略模式)

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