设计模式(一):策略模式(继承,接口,组合的综合运用)

一.继承可能造成的问题有:

    1.很难知道一个基类应该具有的合理的行为集合

    2.后续设计中对于基类的改变,牵一发而动全身

二.相比于基类继承,抽象出一些接口似乎能更好的解决一中提到的问题1,2;但代码重用性变差了

 

那么如何更好的设计一个类体系呢?让不变的东西,可以得到重用,让变化的东西可以实现灵活性,同时也不会使得代码的重用性变差。。。

 

三.做法:

    1.让确定不变的东西放在基类中,实现更好的代码重用和逻辑上的继承关系。

    2.让变化的东西实现灵活性,我们可以对变化的东西进一步抽象为接口,采用组合的方式在基类中放入变化东西的接口。

    3.同时为了实现代码的重用性,我们对每一种变化的类型设计一个类,通过组合,这个类只需要写一份代码就可以使用在各个地方。

    4.我们可以在基类的子类中对接口进行赋值,可以直接在构造函数中对其赋以需要的实现接口的类,但为了不对实现编程,我们其实更好的做法是实现一些set方法,动态地设定那些变化的类,以及在今后还会学到工厂模式。

继承,接口,组合的综合使用,使得我们能够获得更好的类体系结构。

四.设计原则总结:

    1.抽取变化的模块,与不变的模块分离

    2.针对接口编程,而不是针对实现编程

    3.多用组合,少用继承

五.策略模式(Strategy Pattern)的定义:

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

转载于:https://my.oschina.net/u/1187187/blog/192706

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值