美文网首页
iOS设计模式-策略模式

iOS设计模式-策略模式

作者: 渡口丶 | 来源:发表于2019-10-25 15:11 被阅读0次

一、定义

策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

二、适用场景

1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。
2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。
3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。---百度百科

三、具体实现

例:有一个动作冒险游戏,每个角色只能使用一种武器,但是可以在游戏过程中更换武器。

1.将武器抽象为一个行为接口WeaponBehavior

  @protocol WeaponBehavior <NSObject>

  @required

   - (void)userWean;

  @end

2.设计角色的抽象类,将fight方法委托给行为类执行

// Character.h
@interface Character : NSObject

@property (nonatomic, strong) id<WeaponBehavior> weaPonVegavior;

 - (void)fight;

@end

 // Character.m

- (void)fight
{
    [self.weaPonVegavior userWean];
}

3.继承抽象类创建角色类,这里创建了个King类

@interface King : Character
@end

4.创建具体的行为类(各类武器),实现行为接口

// AxeBehavior.h
@interface AxeBehavior : NSObject<WeaponBehavior>
@end
// AxeBehavior.m
@implementation AxeBehavior

- (void)userWean
{
    NSLog(@"用斧子劈砍");
}

@end

5.实现更换武器

 Character *king = [[King alloc] init];
[king setWeaPonVegavior:[SwordBehavior new]];
// [king setWeaPonVegavior:[KnifeBehavior new]];
// [king setWeaPonVegavior:[AxeBehavior new]];
[king fight];

实现了角色(用户)和武器(算法)的相互独立,更改或添加武器(算法),也不会影响到角色(用户)

Demo地址

相关文章

  • 《iOS开发》--------常用的设计模式

    关于iOS开发中的设计模式,当下有集中最常用的设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂...

  • 设计模式

    iOS设计模式(5)策略模式 iOS适配器设计模式其实就是对某个控件上的各个部分,用一个model来统一赋值,而在...

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

  • iOS设计模式之美-适配器模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-抽象工厂模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-工厂模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-生成器模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式(5)策略模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(6)模板模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(7)建造者模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

网友评论

      本文标题:iOS设计模式-策略模式

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