JAVA面向对象的五大基本原则


了解面向对象的思想时,之前仅仅了解了面向对象的三大特性,最近才发现原来面向对象在编程时还有五道金科玉律,这五大基本原则不必一定要遵守,但如《OOD启示录》中所说的:“你并不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看做警铃,若违背了其中的一条,那么警铃就会响起。”

原则一:单一职责原则

简单来说,我们所创建的每一个类的职责越单一,越专注最好,最好只做一件事。是面向对象的低耦合和高内聚的延伸

原则二:开放封闭原则

开发好的软件是可以扩展的,但不可修改。核心思想就是对抽象编程,不对具体编程。让类依赖固定的抽象,因此修改就是封闭的。想要扩展时,我们可以依赖面向对象的继承和多态形式,通过子类继承并覆写父类方法的形式来扩展新的功能,因此又是对扩展开放的。需求时刻在变,因此需要开放封闭原则来维持软件的稳定性,同时又能满足需求的变化。

原则三:LisKov替换原则

软件中的子类必须可以替换其父类,反之不成立。这里的替换指的是将软件中的父类替换为子类,程序的行为不会有任何的变化,反之不成立。LisKov原则着眼于抽象和多态是建立在继承的基础上的。实现方式就是面向接口编程:将公共部分抽象基类接口或者抽象类,在子类中通过复写父类方法支持同样的职责。LisKov替换原则是继承机制的设计原则,违反了Liskov替换原则则必然违反了开放封闭原则。LisKov替换原则使系统能够保持良好的扩展性,同时实现了基于多态的继承机制,减少了程序中的类型判别,减少了代码冗余。

原则四:依赖倒置原则

依赖于抽象。意思就是高层模块不依赖低层模块。在面向对象的编程中,类与类之间不可避免的会有依赖关系,但这种依赖关系会导致程序高耦合,如何解决这种依赖耦合的关系呢?很简单,将顶层需要的功能和底层提供的功能抽象成接口,顶层只需调用这些抽象接口,底层只需实现这些抽象接口,这样的设计模式下,顶层和底层的直接依赖就消失了。而且抽象接口的稳定性维护了程序的稳定性。但有些时候,依赖细节是不可避免的,因此在编程时要具体情况具体分析,做好取舍。

原则五:接口隔离原则

使用多个小而专的接口,不用大而广的接口。首先,非抽象类继承接口时,必须要实现接口中的所有方法,如果接口很胖的话,那每一个实现类可能都要实现很多本不该需要自己实现的功能,压根用不到的功能,这会使代码大大冗余。因此,将胖接口分离成一个个小的定制化方法是很有必要的。分离方法主要有两种:1 委托分离:通过增加一个新的类型来委托客户请求,隔离客户和接口的直接依赖,但是会增加系统开销。2 多重继承分离:将接口分离成一个个定制化接口后,可以使用接口的多继承实现自己想要的功能。

猜你喜欢

转载自blog.csdn.net/weixin_44062399/article/details/123843501