【问题标题】:How to design a class hierarchy如何设计类层次结构
【发布时间】:2013-04-07 16:16:20
【问题描述】:

我正在为 Java 项目设计一个类层次结构。它涉及创建一个类层次结构来表示多个银行帐户。 现在,所有银行账户都有一些共同的属性。这些可以移动到抽象类。然而,有一个属性是几个银行账户共有的,但不是所有的。我应该如何在类层次结构中实现这个属性? 我可能不应该在所有相关类中一遍又一遍地实现该属性,但我想不出另一种方法来做到这一点..

【问题讨论】:

  • 您可以设计一个绑定银行账户行为合约的接口。接下来,Abstract 类可以包含所有银行账户的共同行为。然后,您可以使用装饰器模式来修饰您的类以具有特定的行为。会有很多必要的讨论,但这是要点。希望这会有所帮助。
  • 我刚刚开始 OOP.. 其中一些(如“装饰器模式”)对我来说有点太复杂了。

标签: oop class class-hierarchy


【解决方案1】:

让我尽可能地帮助你。

您可以有一个接口 IBankAccount,它定义了银行帐户的常见行为。将只有方法定义。例如。银行帐户应允许 credit()、debit()、getBalance() 等方法。它可以有一些并非所有银行账户都通用的额外方法。

接下来,您可以拥有一个抽象的 BaseBankAccount 类并实现这些常用方法。之所以如此,是因为 credit()、debit() 和 getBalance() 将在银行账户之间具有共同的行为。

然后您可以定义一个 BankDecorator 接口来定义 BankAccount 行为。特殊装饰器将实现此接口以向银行帐户添加额外功能。例如。 CurrentBankAccountDecorator 将添加当前帐户功能等。

希望这会有所帮助。

【讨论】:

  • 我将不得不阅读一些关于“装饰器”的内容......感谢您为我指明了正确的方向。
  • 这不是解决问题的唯一方法。我希望其他人以更好的解决方案回复。我们可以互相学习很多东西。
【解决方案2】:

你可以使用mixins的编程概念。

另见:D. Ancona、G. Lagorio 和 E. Zucca。 Jam - 设计一个 Java 扩展 混入。 ACM 翻译。程序。朗。系统,25(5):641-712,2003。

【讨论】:

  • 根据维基百科页面,Java 似乎不支持这个概念。
  • Java 本身不支持这个概念是对的。但是,可以创建自己的数据结构来促进这一点。 (我添加了一个参考。)
猜你喜欢
  • 1970-01-01
  • 2013-11-21
  • 2011-05-07
  • 2016-04-22
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多