【发布时间】:2013-02-11 14:17:14
【问题描述】:
我有一个与此非常相似的设计:
这里 NewOrder、Registered 和 Granted 都有公共方法 AddOrderline() 和 Cancel() ,因此将这两种方法重构为父方法上课很简单。
当我想Cancel 一个Shipped 行时出现问题(目前图中未显示)。
由于 Shipped 行不支持 AddOrderline(),所以我需要打破 NewOrder、Registered 和授予 2 类,一类用于Cancel(),另一类用于AddOrderline()。
现在NewOrder 必须扩展 2 个父类才能获得 2 个函数。
备注
- 这个例子非常简单。我的真实应用程序有大约 12 个状态。
- 代码用 PHP 编写,但欢迎使用 C# 或 Java 解决方案,因为我认为解决方案将是相似的,因为它们都不支持多重继承。
【问题讨论】:
标签: java c# php design-patterns state-pattern