2011-07-21 33 views
2

在设计/框架时,通常的做法是为值对象,服务,DAO等设置一个基类。例如,如果我们创建一个新的VO,它将从BaseVO 。如果我们创建新的DAO,它应该从BaseDAO延伸。我们有这样一个基础班的原因是什么?为什么我们在Java中使用基类

回答

1

继承与封装和多态性一起是面向对象编程的三个主要特征之一。继承(继承基类)使您可以创建新的类,以重用,扩展和修改其他类中定义的行为。

向基类中添加常用方法和属性很容易。但这不是所有情况的正确方法。设计模式(如Strategy Pattern)使用上面提到的OOP概念来进行真实设计。

0

有一个母类是一个很好的习惯,这样适用于所有子子元素的行为和数据成员可以在继承树上移动。

例如:

Object toString(); 
5

答案是显而易见的;) 因为可以很容易地添加共同的功能或逻辑应用程序范围内。

例如,如果您始终想要为您的值对象存储创建日期和修改日期。或者提供帮助方法来获取服务中的数据库连接。

0

在扩展框架时,有时需要保留某些功能或字段。我们举一个简单的例子。如果我们有一个名字和说话能力的动物(是学校的例子,但与我一起裸露),那么任何动物都应该拥有这些东西。所以说,我们有一只猫,很明显猫不会说狗,所以这两个人都有能力说话()他们给出了2个不同的结果。

在你的情况下,它也适用于可扩展和可互换的系统,这样你就可以换出图层而不必重写很大一部分代码(有时甚至不需要改变任何东西)。

0

我听到的一句话曾经在这里引用它:

small programs have a funny way of getting bigger quickly

随着项目变得越来越大,你需要它变得更加灵活和有形。因此,使服务和业务逻辑松散耦合,我们避免该对象依赖于其他实现。

0

BaseDAO将包含将在后续类中使用的常用方法,或者您也可以定义一个抽象方法,该方法必须作为所有扩展类应具有的行为来实现。

1

BaseDAO可以为其所有子类所做的一个示例是设置或检索与数据库的连接。将相同的代码放在AppleDAO,PearDAO和BananaDAO中(如果你想在你的数据库中存储的是Apple,Pear和Banana),那将是相当令人不安的。

如果您将用于获取数据库连接的代码放入所有这些代码中,则必须更改所有代码,例如当你的数据库主机改变了。如果它在超类中,则只需在一个地方更改它。

相关问题