当我不得不为Web应用程序设计我的类时,我经常遇到同样的麻烦。要求如下: - 可维护(例如不复制粘贴) - 完全分开的层(业务层不必知道使用哪种数据层方法) - 高性能:不加载无用的数据。关于OOP的基本问题
首先,我有我的所有客户及其地址的表: 代码:
Customer
--Id
--Name
--Address
----City
----ZC
----Street
现在我想要一个表(在另一页)我所有的客户,他们买了书,我有几种可能性:
1 /我创建一个新类:
代码:
CustomerWithBooks
--Id
--Name
--Books[]
----ID
----name
PRO:我只加载有用的数据 缺点:我在我的用户界面后建立我的班级,并且有复制粘贴。
2 /我将Books []添加到第一堂课。 PRO:一切都在同一个班级,它是可维护的 缺点:我加载地址为空。如果我不加载地址,我可以:延迟加载,但我真的不喜欢它,或者当我使用我的类时,我必须知道我调用的DAL的哪个方法,而且我不喜欢它。
3 /我使用继承: 代码:
ClientBase
--ID
--Name
ClientWithBooks : ClientBase
--Books[]
ClientWithAdress : ClientBase
--Address
PRO:真的maintenable,我也并不是没有缺点 加载数据:我该怎么办,如果在一个UI我想什么显示书籍和地址?
4/??我希望有一个完美的解决方案
听起来不错。如果我理解得好,你说如果没有层次结构,我必须避免构成,而不得不做一些“关系类”。 – 2010-02-19 16:02:49