
面向对象的设计原则是OOPS(面向对象的编程系统)编程的核心,但是大多数Java程序员都追求诸如Singleton,Decorator,Observer之类的设计模式java面向对象设计原则,而不关注面向对象的设计分析和设计. 甚至有一些经验丰富的Java程序员都没有听说过OOPS和SOLID设计原理. 他们只是不知道设计原则的好处或如何按照这些原则进行编程.
众所周知,Java编程的最基本原理是追求高内聚和低耦合的解决方案以及代码模块设计. 查看Apache和Sun的开源代码可以帮助您发现这些代码中其他Java设计原理的实际应用. Java开发工具包遵循以下模式: BorderFactory类中的工厂模式和Runtime类中的单件模式. 您可以通过Joshua Bloch的“有效Java”书了解更多信息. 我个人更喜欢的另一种面向对象的设计模式是Kathy Sierra的Head First设计模式和Head First Oriented面向分析与设计.
尽管实际案例是学习设计原理或模式的最佳方法,但是通过本文的介绍,尚未接触这些原理或仍在学习中的Java程序员可以理解这10个面向对象的设计原理. 实际上,每个原则都需要大量空间来阐明,但是我会尽力简洁.
原则1: 干燥(不要重复自己)
也就是说,不要编写重复的代码,而要使用“抽象”类来抽象公共事物. 如果您需要多次使用硬编码值,则可以将其设置为公共常量;如果要在两个以上的地方使用代码块,可以将其设置为独立方法. SOLID设计原理的优点是易于维护,但请注意不要滥用它. 复制不是为了代码,而是为了功能. 这意味着即使使用通用代码来验证OrderID和SSN,它们也不会相同. 实际上,使用公共代码来实现两个不同的功能是将这两个功能永久地绑定在一起. 如果OrderID更改其格式,则SSN验证码也将被中断. 因此,应谨慎使用此组合,不要随意捆绑相似但不相关的功能.

原则2: 包装更改
软件世界中唯一的常数是“更改”,因此封装您认为或猜测会在将来更改的代码. OOPS设计模式的优点是易于测试和维护打包的代码. 如果使用Java编码,则可以默认使用私有变量和方法,并逐渐增加访问权限,例如从私有到受保护而不是公共. 有几种Java设计模式也使用封装. 例如,工厂设计模式封装了“对象创建”,并且它的灵活性允许以后引入新代码而不会影响现有代码.
原理三: 开闭原则
可以扩展,不能修改. 这是另一个伟大的设计原则,可防止其他人更改已测试的代码. 从理论上讲,可以在不修改原始模块的情况下扩展功能. 这也是打开和关闭原则的目的.
原则4: 单一责任原则

修改类的可能性很高,因此您应该专注于单个函数. 如果将多个函数放在同一个类中,则这些函数会形成关联. 更改其中一个功能可能会中止另一个功能. 为了避免可能的问题,需要进行新的测试.
原理5: 依赖注入或反转原理
该设计原则的重点是,DI框架注入的任何类都易于使用模拟对象进行测试和维护,因为对象创建代码集中在框架中,并且客户端代码不会造成混淆. 实现依赖关系反转的方法有很多,例如AOP(面向方面的编程)框架(如AspectJ)使用的字节码技术,或Spring框架使用的代理.
原则6: 首先在继承上使用组合
如果可能的话,更喜欢使用组合而不是继承. 有人可能会质疑,但是我发现组合比继承要灵活得多. 组合允许您通过在运行时设置类的属性来更改类的行为,或者可以通过使用接口来组合类,该接口提供了更大的灵活性,并且可以随时实现. “有效的Java”也建议使用此原理.

原则7: 李斯科夫替代原则(LSP)
根据此原理,子类必须能够替换其基类,这意味着基类的方法或函数可以成功引用子类对象. LSP原则与单一职责原则和接口分离原则密切相关. 如果一个类具有比子类更多的功能,则某些功能很可能会失败,这违反了LSP原理. 为了遵循此设计原则,必须增强派生类或子类.
原则8: 接口分离的原理
使用与特定客户端类相关的多个接口比使用涵盖多个业务方法的公共接口更好. 设计接口非常棘手java面向对象设计原则,因为一旦释放接口,就无法在不中断执行的情况下对其进行更改. 在Java中,此原理的另一个优点是,在任何类使用接口之前,该接口都不利于实现所有方法,因此单个函数意味着实现方法更少.
原则9: 用于接口编程,而不是用于实现编程

此原理可以使代码更灵活,以便可以在任何接口实现中使用. 因此,最好在Java中使用变量接口类型,方法返回类型,方法参数类型等. 还提到了“有效的Java”和“从头开始设计模式”这两本书.
原则10: 调试原理
此原理的最典型示例是Java中的equals()和hashCode()方法. 为了相等地比较两个对象,我们使用类本身而不是客户端类. 这种设计原理的优点是没有重复的代码,并且很容易对其进行修改.
简而言之,我希望这些面向对象的设计原则可以帮助您编写更灵活,更好的代码. 理论是第一步,更重要的是,开发人员需要在实践中应用和体验它.
英语原文: Java程序员应了解的10个面向对象设计原则
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-281876-1.html
@老子起个昵称怎么就那么难@郑甜甜的辛普森美美美
一个生病孩子急需大家的帮助
甚至是扶持恐怖组织