策略模式的私有变量处理

 

      这是我现在写的一个android小程序的简单的UML图。在图中,Money是抽象的父类。接口Analysis是策略类的接口。在这里,做为父类的Money有一个方法getAmount。通过策略模式来实现。
      最早对于Money的子类Entry其实现的getAmount方法的实现。就是把其内部的私有成员Amount返回出去就可以了。但是在这样写的时候,发觉了问题,也就是如果这样来做,那么也就违反了策略模式的初衷,减少了代码重用的机会。对于策略模式来说,其本质是使得相同方法的不同实现的代码能够被重用。所以当策略中的一个方法,在子类中被覆盖的时候,那么关于这个方法的代码就不能够被重用,那么这样的设计也就失去了策略模式的意义。
      对于这个问题,我的解决是把本该放在Entry里面的私有变量放入了具体的策略实现类,EntryAnalysis中来解决。这样就能够在策略类里面重写方法,达到了策略模式的目的。
      这样做之后,让我对类的成员变量作用产生了一点小小的改变。在过去,尽管来说我也喜欢通过方法来访问,比方说即使在bean中,我也是很喜欢用get方法来获取相关的成员变量。但是在我脑海里。有着成员变量就类的状态的参数的概念。由于这个概念的存在,也就发生了一开始的错误。因为在我看来,既然成员变量表示的是状态。那么就应该存在于类当中。但是在理清了这里的这个思路之后,我发生了改变。表示一个类的状态的方法可以是一个返回值,一个成员变量。只是很多时候,成员变量的比较方便而已。比如说这里,无论什么地方,Entry都有一个名字叫做amount的状态。无论什么地方,我都可以通过访问amount这个变量,或者得到getAmount这个返回值来获得Entry的状态值。同样的,getAmount这个方法会更加出色。
      回到策略模式,其实策略模式封装的不一定只是方法,也可以是变量。因为对于一个策略模式来说,其实封装的应该是可变的成分,其中包括了变量和方法。
       

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值