在设计/框架时,通常的做法是为值对象,服务,DAO等设置一个基类。例如,如果我们创建一个新的VO,它将从BaseVO 。如果我们创建新的DAO,它应该从BaseDAO延伸。我们有这样一个基础班的原因是什么?为什么我们在Java中使用基类
回答
继承与封装和多态性一起是面向对象编程的三个主要特征之一。继承(继承基类)使您可以创建新的类,以重用,扩展和修改其他类中定义的行为。
向基类中添加常用方法和属性很容易。但这不是所有情况的正确方法。设计模式(如Strategy Pattern)使用上面提到的OOP概念来进行真实设计。
有一个母类是一个很好的习惯,这样适用于所有子子元素的行为和数据成员可以在继承树上移动。
例如:
Object toString();
答案是显而易见的;) 因为可以很容易地添加共同的功能或逻辑应用程序范围内。
例如,如果您始终想要为您的值对象存储创建日期和修改日期。或者提供帮助方法来获取服务中的数据库连接。
在扩展框架时,有时需要保留某些功能或字段。我们举一个简单的例子。如果我们有一个名字和说话能力的动物(是学校的例子,但与我一起裸露),那么任何动物都应该拥有这些东西。所以说,我们有一只猫,很明显猫不会说狗,所以这两个人都有能力说话()他们给出了2个不同的结果。
在你的情况下,它也适用于可扩展和可互换的系统,这样你就可以换出图层而不必重写很大一部分代码(有时甚至不需要改变任何东西)。
我听到的一句话曾经在这里引用它:
small programs have a funny way of getting bigger quickly
。
随着项目变得越来越大,你需要它变得更加灵活和有形。因此,使服务和业务逻辑松散耦合,我们避免该对象依赖于其他实现。
BaseDAO将包含将在后续类中使用的常用方法,或者您也可以定义一个抽象方法,该方法必须作为所有扩展类应具有的行为来实现。
BaseDAO可以为其所有子类所做的一个示例是设置或检索与数据库的连接。将相同的代码放在AppleDAO,PearDAO和BananaDAO中(如果你想在你的数据库中存储的是Apple,Pear和Banana),那将是相当令人不安的。
如果您将用于获取数据库连接的代码放入所有这些代码中,则必须更改所有代码,例如当你的数据库主机改变了。如果它在超类中,则只需在一个地方更改它。
- 1. 为什么我们使用内部类?
- 2. 为什么我们使用WebMvcAutoConfigurationAdapter类
- 3. 为什么我们在派生类中使用使用声明?
- 4. 为什么我们在jQuery中使用“({})”?
- 5. 为什么我们在Java项目中使用Strategy Facade
- 6. 为什么我们不能在Java中使用指针?
- 7. par文件为什么我们在java开发中使用它
- 8. 为什么我们在JAVA中使用这段代码?
- 9. 为什么我们在java中使用“?super T”?
- 10. 为什么我们只在Java中使用(String args [])?
- 11. 为什么我们在java项目中使用rt.jar?
- 12. 为什么我们在Java中使用堆栈和队列?
- 13. 为什么我们不应该在Java中使用
- 14. 为什么我们在java logger中使用:: {}
- 15. 我为Java Spring使用什么主类?
- 16. 为什么我们在Objective-C中使用类别
- 17. 为什么我们在Spring MVC中使用Model类(model.addAttribute())?
- 18. 为什么我们甚至在Spring MVC中使用模型类?
- 19. 为什么我们在JS中使用$(function(){})类似的语法?
- 20. 为什么我们在ASP.NET MVC中使用泛型类型?
- 21. django:为什么我们在modelSerializer中使用嵌套的元类?
- 22. 为什么我们在C#中使用内部类常量?
- 23. 为什么我们不能在Map Reduce中使用Java原始数据类型?
- 24. 我们为什么要在Java中使用特定类型的列表
- 25. 为什么我们在java中使用抽象类和抽象方法
- 26. 为什么我们在html中使用id。我认为我们可以使用一个类作为ID
- 27. 在ConstraintLayout中,我们在RelativeLayout中使用'app',我们使用'android'。为什么?
- 28. 为什么我们使用Groovy中
- 29. 为什么我们不得不使用私人?在C + +和Java?
- 30. 为什么我们需要Java中的抽象类?