0

您有一台具有 3 种状态和 2 种方法的 ATM 机。如果这是模式的伪实现。

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

如果Operation13 种状态具有相同的行为,您只需将实现放在Operation1第 02 行,但是如果Operation1只有 2 种状态具有相同的实现而第 3 种状态具有不同的实现呢?你将如何在不重复代码的情况下解决这个问题?

PS这当然是一个非常简化的例子,但是同样的概念将继续说40个状态和7个操作要实现。

4

1 回答 1

0

将 in 的定义放在Operation1in 中AbstractATMState并覆盖它State3

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

于 2013-08-30T14:10:26.230 回答