【发布时间】:2011-01-23 13:02:20
【问题描述】:
我在一个项目中,几乎是我第一次自己做所有的架构,我遇到了一个令人沮丧的情况。从启发式的角度来看,我的表单架构似乎是正确的,但我认为它的实现并不正确。
我的架构是这样的:
基类:OrderForm
儿童班:PurchaseOrder、Invoice、Credit
PurchaseOrder 的子类:StockingOrder
从架构上讲(对我而言)这是有道理的,因为所有子类都是 OrderForms(“is a”),而 Stocking Order“是”采购订单,只是一种特殊的类型。
问题
在编写我的 StockingOrder 类时,我注意到我必须 Shadow 使用 PurchaseOrder 中的大部分(如果不是全部)方法,因为它们在概念上做同样的事情但需要略有不同实现功能。当然,这对我来说很臭,但我不知道如何解决它。我究竟做错了什么?或者这是正常的吗?(!)
谢谢...
【问题讨论】:
-
您能否更具体地了解“略有不同的实现”?也许继承结构还不错,可能是需要解耦或重构的问题。
-
例如,如果我有一个名为
GetForms()的方法,我需要它从数据库中获取正确的表单,即获取 StockingOrders 而不是 PurchaseOrders。两者都获取表单(并从技术上获取 PurchaseOrders)但数据库不知道... -
我建议您查看Strategy Pattern。这将允许您为每个订单类型提供您正在执行的方法的“剧本”。这将帮助您简化逻辑中的差异。
标签: asp.net vb.net inheritance architecture