【发布时间】:2010-02-11 07:38:55
【问题描述】:
在创建类时,我曾多次问过自己这个问题,尤其是那些涉及集合的类,但我从来没有想出一个令人满意的答案。这是一个 OOP 设计问题。
例如,在一个支票簿注册程序中说我有一个BankAccount 类。 BankAccounts 包含涉及账户名称、账户类型(Checking、Saving 等的枚举)和其他数据的数据,但最重要的是账户中 Adjustments(存款或取款)的集合.
在这里,我有两个选项来保存调整的集合:
- 实例化一个集合并将其作为 BankAccount 类中的一个成员。这就像说“BankAccount 有一系列调整。”
- 从集合继承。这就像说“BankAccount 是一个调整集合。”
我认为这两种解决方案都很直观,当然,它们都有一些优点和缺点。例如,实例化允许类(在只允许单个基类的语言中)从另一个类继承,而从集合继承可以轻松控制 Add、Remove 和其他方法,而无需编写代理方法来“包装” '那些。
那么,在这种情况下,哪种方法更好?
【问题讨论】:
-
看看这篇文章:javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html 它描述了继承如何降低可维护性。
标签: language-agnostic oop inheritance class-design