设计模式-策略设计模式

设计模式让开发者有共同语言。大部分的设计模式着眼于软件变化的主题,允许系统局部改变独立于其他部分。分析项目中变化和不变的部分。

设计模式是前人归纳总结的经验,通用的解决方案。

面向对象原则:可扩充,可复用,可维护。面向对象基础:抽象,多态,继承,封装。

把系统的变化的部分封装。

针对接口编程,与多态相关,与面向超类编程有关。

策略模式:?定义一系列算法,分别封装,让它们可以相互替换。算法的变化独立于使用算法的客户。?

策略原则:封装变化;多用组合少用继承(有一个比是一个好);针对接口编程而不是根据实现编程。

分析项目中变化的和不变的部分,提取变化的部分,抽象为接口和实现。

好处:新增行为很简单,行为类更好的复用,组合更方便。

行为族相互之间可以替换。用行为的组合而不是继承更有弹性。

行为封装为对象。分别封装行为接口,实现算法族,超类中放行为接口对象,在子类里具体设定行为对象。分离变化的部分,封装接口,基于接口编程各种功能,让行为算法的变化独立于算法的使用者。

代码举例:现需要开发某系统,关于鸭子。世界上有千奇百怪各种式样的鸭子,它们存在共性(例如有心脏等),它们存在差异(叫声,飞翔本领)。对于一个这样的系统,我们可以建立一个鸭子的超类,将很多共性的东西放入最上层的超类中。

问题:有的鸭子会飞,有的不会,如果对此类鸭子处理?

答:1、最上层的超类中直接写入fly()方法,子类运用或复写。2、最上层的超类中写入abstract fly方法,需要运用的覆盖,不需要使用的写入一个空方法。3、子类继承超类后直接添加新的方法。显然以上三种方式不符合可拓展,可维护,可复用的特性。会引起各式各样的问题。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值