2013-04-07 133 views
0

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

+0

您可以设计一个界面,该界面绑定银行账户的行为合约。接下来,Abstract类可以包含所有银行帐户的常见行为。然后,您可以使用装饰模式来修饰您的类以具有特定的行为。 有很多需要讨论,但这里的要点。希望这可以帮助。 – Sid 2013-04-07 16:18:58

+0

我刚刚开始OOP ..一些(像'装饰模式')对我来说有点太复杂。 – mahela007 2013-04-07 16:49:49

回答

0

您可以使用mixins的编程概念。也可参见:D. Ancona,G.Lagorio和E.Zucca。 Jam - 用 mixins设计Java扩展。 ACM Trans。程序。郎。 Syst。,25(5):641-712,2003。

+0

根据维基百科页面,Java似乎不支持这个概念。 – mahela007 2013-04-07 16:52:44

+0

无效回复。 – Sid 2013-04-07 17:01:14

+1

Java没有在本质上支持这个概念。但是,可以创建一个自己的数据结构来促进这一点。 (我添加了一个参考。) – nrainer 2013-04-07 21:33:27

3

让我尽可能地帮助你。

您可以有一个接口IBankAccount,它定义了银行账户的常见行为。只会有方法定义。例如。一个银行账户应该允许credit(),debit(),getBalance()等方法。它可以有一些额外的方法对所有银行账户都不那么常见。

接下来,您可以拥有一个BaseBankAccount类,它将是抽象的并实现这些commmon方法。这是因为credit(),debit()和getBalance()在银行账户中会有一个共同的行为。

然后,您可以定义一个BankDecorator接口来定义BankAccount行为。特殊的装饰者将实现这个界面来为银行账户添加额外的功能。例如。 CurrentBankAccountDecorator将添加当前帐户功能等。

希望这有助于。

+0

我将不得不阅读一些关于'装饰者'..感谢指出我在正确的方向。 – mahela007 2013-04-07 18:08:00

+0

这不是解决问题的唯一方法。我希望其他人回答更好的解决方案。我们可以互相学习很多东西。 – Sid 2013-04-07 18:11:02