美文网首页Android开发经验谈
java5大原则叫你学会面向对象设计

java5大原则叫你学会面向对象设计

作者: 陈安妮annie1 | 来源:发表于2018-01-16 10:54 被阅读0次

1、优先使用组合而非继承

如果可以的话,要优先使用组合而非继承。你们中的一些人可能为此争论,但我发现组合比继承更有灵活性。组合允许在运行时通过设置属性修改一个类的行为,通过使用多态即以接口的形式实现类之间的组合关系,并且为修改组合关系提供了灵活性。甚至 Effective Java也建议优先使用组合而非继承。

2、里氏替换原则

根据里氏替换原则,父类出现的地方可以用子类来替换,例如父类的方法或函数被子类对象替换应该没有任何问题。LSP和单一职责原则、接口隔离原则密切相关。

如果一个父类的功能比其子类还要多,那么它可能不支持这一功能,而且也违反了LSP设计原则。为了遵循 LSP SOLID设计原则,派生类或子类(相对父类比较)必须增强功能,而非减少。SOLID中的字母“L”指的就是 LSP设计原则。

3、接口隔离原则

接口隔离原则指,如果不需要一个接口的功能,那么就不要实现此接口。这大多在以下情况发生:一个接口包含多种功能,而实现类只需要其中一种功能。

接口设计是一种棘手的工作,因为一旦发布了接口,您就不能修改它否则会影响实现该接口的类。在Java中这种设计原则的另一个好处是:接口有一个特点,任何类使用它之前都要实现该接口所有的方法,所以使用功能单一的接口意味着实现更少的方法。

4、编程以接口(而非实现对象)为中心

编程总是以接口(而非实现对象)为中心,这会使代码的结构灵活,而且任何一个新的接口实现对象都能兼容现有代码结构。所以在Java中,变量、方法返回值、方法参数的数据类型请使用接口。这是许多Java程序员的建议, Effective Java 以及 head first design pattern 等书也这样建议。

5、代理原则

不要期望一个类完成所有的功能,可以适当地把一些功能交给代理类实现。

代理原则的典范是:Java 中的equals() 和 hashCode() 方法。为了比较两个对象的内容是否相同,我们让用于比较的类本身完成对比工作而非它们的调用方。这种设计原则的好处是:没有重复编码而且很容易修改类的行为。

总结

以上所有面向对象的设计原则可以帮助您写出灵活、优雅的代码:具有高内聚低耦合的代码结构。理论只是第一步,更重要的是我们要习得一种能力去发现什么时候使用这些设计原则。去发现我们是否违反了什么设计原则和影响了代码的灵活性,但是世界上没有什么是完美的,我们解决问题时不能总去使用设计模式和设计原则,它们大多用于有较长维护周期的大型企业项目。

更多java资料、视频,加群462403503或点击下方蓝色字体了解学习

蓝色字体

相关文章

  • java5大原则叫你学会面向对象设计

    1、优先使用组合而非继承 如果可以的话,要优先使用组合而非继承。你们中的一些人可能为此争论,但我发现组合比继承更有...

  • Android 设计模式之常见设计模式总结

    今天我们来总结下我们所学习的设计模式 面向对象的六大原则 Android 设计模式之面向对象的六大原则 面向对象的...

  • 面向对象三大特性-----封装、继承、多态

    前言 前面有文章写到了面向对象编程和面向对象设计的头五大原则(SOLID五大原则)。今天我们再来谈谈面向对象的三大...

  • 设计模式六大原则

    设计模式六大原则 一、面向对象设计六大原则 面向对象的关键在于封装,封装好了才能很好的复用,达到单一职责和开放扩展...

  • C++设计模式 Week1 (Boolan) by Im4lis

    1-设计模式简介2-面向对象设计原则面向对象设计的八大原则:1、依赖倒置原则(DIP):稳定的部分不应该依赖于变化...

  • 面向对象的七大设计原则

    面向对象的七大设计原则文章目录面向对象的七大设计原则简述七大原则之间的关系一、开闭原则(The Open-Clos...

  • 面向对象六大原则

    设计模式的六大原则:(面向对象的六大原则) 一、单一职责原则:Single Responsibility Prin...

  • 面向对象的六大原则

    设计模式基础 面向对象的六大原则 单一职责原则(Single Responsibility Principle, ...

  • SOLID

    面向对象程序设计5大原则 单一职责原则(Single Responsibility Principle) 开放封闭...

  • 设计模式

    设计原则: 面向对象需要遵循的六大原则: 单一职责原则(SingleResponsibilityPrinciple...

网友评论

    本文标题:java5大原则叫你学会面向对象设计

    本文链接:https://www.haomeiwen.com/subject/lhqsoxtx.html