策略模式是什么

1.策略模式

先说设计原则:

①针对接口编程,而不是面向实现。

③将代码稳定部分和变化部分分离。

 

实例:针对鸭子的(飞和叫)行为,拿出来作为接口

具体理解:我们针对飞行接口和叫声接口单独做了抽象基类,在抽象基类之下分别继承了不同的飞行类型。然后我们应该定义一个专门用来调用相关接口的类:

例如:

class Stragegy{
private:
    FlyBehavior fly1;    
    QuackBehavior quack1;

public:
    Stragegy(FlyBehavior fly1, QuackBehavior quack1){this.fly1 = fly1; this.quack1 = quack1;}
    fly1.fly();
    quack1.quack();
}

我们使用的原则:其一:针对接口编程在本例中值指的是针对飞行和叫的行为编程,而不是针对鸭子叫和飞来编程。其二:代码稳定的地方是飞行和叫的基类,以及stragegy类,变化的地方是各个子类。

2、适用场景

①系统有很多类,但是他们的区别只是行为不同

②一个系统需要动态的在几个算法中选择一种

③多个类只有在算法或行为上稍有不同的场景

④算法需要自由切换的场景

⑤需要屏蔽算法规则的场景

 

 

3.策略模式的优点:

①可以减少ifelse语句
②提高算法的保密性和安全性
③符合开闭原则

4、缺点

①客户端需要知道所有策略类,自己决定使用哪个策略类
②类的数量增加

 



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值