首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >状态模式状态中的常见行为

状态模式状态中的常见行为
EN

Stack Overflow用户
提问于 2013-08-30 21:30:31
回答 1查看 117关注 0票数 0

您有一个具有3个状态和2个方法的ATM机。如果这是该模式的phesudo实现。

代码语言:javascript
复制
01-- class AbstractATMState
02-- Operation1
03-- Operation2
04--
05-- class State1 : AbstractATMState
06-- Operation1
07-- Operation2
08-- 
09-- class State2 : AbstractATMState
10-- Operation1
11-- Operation2
12-- 
13-- class State3 : AbstractATMState
14-- Operation1
15-- Operation2

如果Operation1对这3个州有相同的行为,您只需将Operation1的实现放在第02行,但如果Operation1只对2个州有相同的实现,而对第三个州有不同的实现,该怎么办?如何在不重复代码的情况下解决此问题?

附言:当然,这是一个非常简单的例子,但同样的概念将继续下去,比如40个州有7个要实施的操作。

EN

回答 1

Stack Overflow用户

发布于 2013-08-30 22:10:26

Operation1的定义放在AbstractATMState中,并在State3中覆盖它。

把它放在第2行,然后在第14行放一个不同的实现。当你从State3调用它时,它会使用线性化(如果你想查找它)来获得最合适的版本,它是在它自己的类中的版本,如果它存在的话,而不是基类。但它将采用State1State2的基类版本,因此您不需要为它们提供自己的实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18534154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档