应该知道的面向对象设计原则 - 极悦
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 应该知道的面向对象设计原则

应该知道的面向对象设计原则

更新时间:2022-04-18 09:30:44 来源:极悦 浏览687次

尽管学习任何设计原则或模式的最佳方法是通过一个真实的示例并了解违反该设计原则的后果,但本文的主题是为没有接触过它的 Java 程序员介绍面向对象的设计原则或者在学习阶段。

1. DRY

我们的第一个面向对象的设计原则是 DRY,顾名思义,DRY(不要重复自己)的意思是不要编写重复的代码,而是使用Abstraction将常见的东西抽象在一个地方。如果您在两个以上的地方有一段代码,请考虑将其设为单独的方法,或者如果您多次使用硬编码值,请将它们设为 public final constant。

这种面向对象设计原则的好处在于维护。重要的是不要滥用它,重复不是为了代码,而是为了功能。这意味着如果您使用标准代码来验证OrderID和SSN,这并不意味着它们是相同的,或者它们将来会保持相同。

通过为两个不同的功能或事物使用标准代码,您可以将它们永远紧密地结合在一起,并且当您的 OrderId 更改其格式时,您的 SSN 验证代码将中断。

2. 封装变化

软件领域只有一件事是不变的,那就是“改变”,所以封装你期望或怀疑在未来改变的代码。这种 OOP 设计原则的好处是易于测试和维护适当的封装代码。

如果你是在 Java 中编码,那么遵循将变量和方法默认设为私有并逐步增加访问权限的原则,例如从私有到受保护而不是公开。

Java中的一些设计模式使用了封装,工厂设计模式 是封装的一个示例,它封装了对象创建代码,并为以后引入新产品提供了灵活性,而不会影响现有代码。

顺便说一句,如果您有兴趣了解有关 Java 和面向对象编程中的设计模式的更多信息,那么您必须查看此 设计模式库 课程 Pluralsight。它是关于如何在现实世界中使用它们的设计模式和建议的最佳集合之一。

3. 开放封闭设计原则

类、方法或函数应该对扩展开放(新功能),对修改关闭。这是另一个漂亮的 SOLID 设计原则,它可以防止有人更改已经尝试和测试过的代码。

理想情况下,如果您只是添加新功能,那么您的代码应该经过测试,这就是 开放封闭设计原则的目标。顺便说一句,开闭原则是 SOLID 首字母缩写词中的“O”。

4.单一职责原则(SRP)

Single Responsibility Principle 是另一个 SOLID 设计原则,在 SOLID 首字母缩写词上代表“S”。根据 SRP,更改类的原因不应该超过一个,或者类应该始终处理单一功能。

如果你在 Java 中的一个 Class 中放置多个功能,它会引入 两个功能之间的耦合 ,即使你更改一个特性,也有可能破坏耦合功能,这需要另一轮测试以避免对生产造成任何意外环境。

5.依赖注入或倒置原理

不要要求依赖;它将由框架提供给您。这在Spring 框架中已经很好地实现了 ,这种设计原则的美妙之处在于,任何由 DI 框架注入的类都易于使用模拟对象进行测试,并且维护起来更舒适,因为对象创建代码集中在框架中。并且客户端代码没有乱七八糟。

有多种实现依赖注入的方法,例如使用字节码检测,一些 AOP(面向方面​​的编程)框架,如 AspectJ,或者使用代理,就像在 Spring 中使用的那样。

6. 偏好组合胜于继承

如果可能的话,总是倾向于组合而不是继承。你们中的一些人可能会争论这一点,但我发现 Composition 比Inheritance灵活得多。

组合允许通过在运行时设置属性来改变类在运行时的行为,并且通过使用接口组合一个类,我们使用多态性,它提供了随时替换为更好实现的灵活性。

7. 里氏替换原则(LSP)

根据Liskov 替换原则,子类型必须可替换父类型,即使用超类类型的方法或函数必须能够与子类的对象毫无问题地工作” 。LSP 与单一职责原则和接口隔离原则

密切相关. 如果一个类有更多的功能,那么子类可能不支持某些功能并且确实违反了 LSP。

8.接口隔离原则(ISP)

接口隔离原则指出,如果客户端不使用接口,则不应实现该接口。这主要发生在一个接口包含多个功能时,而客户端只需要一个功能而不需要其他功能。

界面设计是一项棘手的工作,因为一旦发布了界面,就无法在不破坏所有实现的情况下对其进行更改。

Java中这种设计原则的另一个好处是,接口的缺点是在任何类可以使用它之前实现所有方法,因此具有单一功能意味着实现的方法更少。

9. 接口编程而不是实现

始终为接口而不是应用程序编程;这将导致灵活的代码可以与接口的任何新实现一起使用。

因此,在Java变量、方法的返回类型或方法的参数类型使用接口类型。

10. 委托原则

不要自己做所有事情,将其委托给相应的班级。委托设计原则的经典示例是Java 中的 equals() 和 hashCode() 方法。为了比较两个对象是否相等,我们要求类本身进行比较,而不是让Client类进行检查。

这种设计原则的主要好处是没有重复代码并且很容易修改行为。事件委托是这个原则的另一个例子,其中一个事件被委托给处理程序进行处理。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>