Java程序员最应该学习的几个面向对象的设计原则

面向对象的设计原则是OOP编程的核心,但我已经看到大多数Java程序员追逐设计模式,如Singleton模式,Decorator模式或O​​bserver模式,并无充分注意学习面向对象的分析和设计。学习面向对象编程(如抽象,封装,多态和继承)的基础知识很是重要。可是,了解面向对象的设计原则一样重要。它们将帮助您建立一个干净的模块化设计,以便未来轻松测试,调试和维护。程序员

我常常看到各类经验水平的Java程序员和开发人员,他们从未据说过这些OOP和SOLID设计原理,或者根本不知道特定设计原则提供什么好处以及如何在编码中应用这些设计原则。面试

尽我所能,我已经记下了全部重要的面向对象设计原则并将其放在这里以供快速参考。这些至少可让你了解它们是什么以及它们提供的好处。编程

1. DRY (Don't repeat yourself)设计模式

咱们的第一个面向对象的设计原则是DRY,顾名思义DRY(不要重复本身)意味着不要编写重复的代码,而是使用Abstraction在一个地方抽象常见的东西。若是你在两个以上的地方有一个代码块,请考虑将其做为一个单独的方法,或者若是你使用屡次硬编码值使它们公开最终常量。架构

这种面向对象设计原则的好处在于维护。重要的是不要滥用它,重复不是代码,而是功能。这意味着若是你使用公共代码来验证OrderID和SSN,那么这并不意味着它们是相同的,或者它们未来会保持不变。框架

Java程序员最应该学习的几个面向对象的设计原则

 

经过使用两个不一样功能或事物的公共代码,你能够永久地将它们紧密耦合,当你的OrderId更改其格式时,您的SSN验证代码将会中断。模块化

因此要注意这种耦合,只是不要组合使用相似代码但不相关的任何东西。你能够在Udemy上进一步查看Java课程中的软件架构和设计模式基础知识,以了解有关编写设计系统时要遵循的良好代码和最佳实践的更多信息。函数

2. 封装有哪些变化学习

软件领域中只有一件事是不变的,那就是“改变”,因此封装你指望或怀疑将要改变的代码。这种OOP设计原则的好处是能够轻松测试和维护适当的封装代码。测试

若是你使用Java进行编码,则遵循默认状况下将变量和方法设为私有的原则,并逐步增长访问权限,例如:从私人到受保护而非公共。

Java程序员最应该学习的几个面向对象的设计原则

 

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

3.开放封闭设计原则

类方法或函数应该是Open for extension(新功能)和Closed以进行修改。这是另外一个漂亮的SOLID设计原则,它能够防止有人更改已经试验和测试过的代码。

Java程序员最应该学习的几个面向对象的设计原则

 

理想状况下,若是只是添加新功能,那么应该测试该代码,这是开放式封闭设计原则的目标。顺便说一句,Open Closed原则是SOLID首字母缩略词中的“O”。

4.单一责任原则(SRP)

单一责任原则是另外一种SOLID设计原则,在SOLID首字母缩略词上表明“S”。根据SRP,类的更改缘由不该超过一个,或者类应始终处理单个功能。

Java程序员最应该学习的几个面向对象的设计原则

 

若是在Java的一个类中放置了多个功能,它会引入两个功能之间的耦合,即便更改了一个功能,也有可能破坏耦合功能,这须要进行另外一轮测试以免对生产环境产生任何意外。

5.依赖注入或反转原理

这个设计原则的优势在于任何由DI框架注入的类都易于使用模拟对象进行测试而且更易于维护,由于对象建立代码集中在框架和客户端代码中没有那么多。

Java程序员最应该学习的几个面向对象的设计原则

 

实现依赖注入有多种方法,好比使用像AspectJ那样的一些AOP(Aspect Oriented programming)框架的字节码检测,或者使用像Spring同样使用的代理。

6.同意组合而不是继承

能够的话,通常是优先选择组合而不是继承。有些人可能会争论这一点,但我发现组合比继承灵活得多。

复合容许在运行时经过在运行时设置属性来更改类的行为,并经过使用接口来组合类,咱们使用多态性,它提供了灵活性,能够在任什么时候候用更好的实现进行替换。

Java程序员最应该学习的几个面向对象的设计原则

 

7.利斯科夫替代原则(LSP)

根据Liskov替换原则,子类型必须可替代超类型,即便用超类类型的方法或函数必须可以与子类的对象一块儿工做而没有任何问题“

LSL与单一责任原则接口隔离原则密切相关。类具备比子类更多的功能可能不支持某些功能而且违反LSP。

Java程序员最应该学习的几个面向对象的设计原则

 

8.接口隔离原理(ISP)

接口隔离原则指出,若是客户端不使用接口,它就不该该实现接口。这种状况一般发生在一个接口包含多个功能,而客户端只须要一个功能而不须要其余功能时。

界面设计是一项棘手的工做,由于一旦释放界面,就没法在不破坏全部实现的状况下更改界面。

 

Java程序员最应该学习的几个面向对象的设计原则

 

 

9.受权原则

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

不要本身作全部的事情,把它委托给不一样的类。委托设计原则的经典例子是Java中的equals()和hashCode()方法。为了比较两个对象是否相等,咱们要求类自己进行比较,而不是客户端类进行检查。

Java程序员最应该学习的几个面向对象的设计原则

 

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

全部这些 面向对象的设计原则 经过努力实现高内聚和低耦合,帮助你编写灵活且更好的代码。理论是第一步,但最重要的是培养发现什么时候应用这些设计原则的能力。

 

获取最新面试与学习资料,

欢迎加入Java进阶架构交流群:142019080。

直接点击连接加群。https://jq.qq.com/?_wv=1027&k=5lXBNZ7

相关文章
相关标签/搜索