Java中面向对象的设计原则

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:学习面向对象编程(如

学习面向对象编程(如 抽象 ,   封装 ,   多态 和   继承)的 基础知识非常重要  。但是,与此同时,了解面向对象的设计原则,创建清洁和模块化设计同样重要。这些指南有助于设计强大的面向对象的软件设计。

封装变化的内容

  • 如果您知道您的代码将来会发生变化,请将其分开。
  • 这种OOPS设计原则的好处是可以轻松测试和维护适当的封装代码。
  • 只有一件事在软件领域是不变的,那就是“改变”,所以封装你期望或怀疑将来要改变的代码。
  • 如果您使用 Java 进行编码,则遵循默认情况下将变量和方法设为私有的原则,并逐步增加访问权限,例如从私有到受保护而不是公共。Java中的一些 设计模式 使用Encapsulation,Factory设计模式是Encapsulation的一个示例,它封装了对象创建代码,并提供了以后引入新产品的灵活性,而不会影响现有代码。

代码到接口而不是实现

  • 始终为接口编程而不是为了实现,这将导致灵活的代码,可以与接口的任何新实现一起工作。
  • 在Java中使用变量的接口类型、方法的返回类型或方法的参数类型。这已经被许多Java程序员所建议,包括Effective Java和Head First设计模式书。

授权原则

  • 不要自己做所有事情,把它委托给各自的类。委托设计原则的经典示例是  Java中的 equals()   和   hashCode() 方法。
  • 为了比较两个对象是否相等,我们要求类本身进行比较,而不是让客户端类进行检查。这种设计原则的好处是代码不重复,并且很容易修改行为。

开放封闭原则(OCP)

  • 类应该是扩展时开放,修改时关闭。
  • 类、方法或函数应为扩展打开(新功能),并为修改关闭。
  • 这种面向对象设计原则的好处是,它可以防止有人改变已经经过试验和测试的代码。

不要重复自己

  • 通过抽象常见事物并将它们放在一个位置来避免重复代码。
  • 使用抽象类在一个地方抽象公共事物。如果代码块位于两个以上的位置,请考虑将其设置为单独的方法,或者如果多次使用硬编码值,请将其设置为公共静态最终常量。
  • 这种面向对象设计原则的好处在于维护。

单一责任原则(SRP)

  • 我们的Web应用程序中的每个对象都应该承担单一责任,并且所有对象的服务应该专注于承担单一责任(SRP)。
  • 如果在Java中的一个类中放置多个功能,它会引入两个功能之间的耦合,即使您更改了一个功能,也有可能破坏耦合功能,这需要另一轮测试以避免在生产环境中产生任何意外。

利斯科夫的替代原则(LSP)

  • 子类应该适合它们的基类。
  • 根据Liskov替换原则,子类型必须可替代超类型,即使用超类型的方法或函数必须能够与子类的对象一起工作而没有任何问题。
  • LSP与单一责任原则和接口隔离原则密切相关。如果一个类具有比子类更多的功能则可能不支持某些功能并且违反了LSP。

接口隔离原理(ISP)

  • 接口隔离原则规定,如果客户端不使用该接口,则不应实现该接口。
  • 这种情况主要发生在一个接口包含多个功能,而客户端只需要一个功能而不需要其他功能时。接口设计是一项棘手的工作,因为一旦释放接口,就无法在不破坏所有实现的情况下更改接口。
  • Java中这种设计原则的另一个好处是,接口的缺点是在任何类都可以使用之前实现所有方法,因此具有单一功能意味着更少的实现方法。

依赖注入或反演原则

  • 不要要求依赖,它将由框架提供给您。这在Spring框架中得到了很好的实现,这个设计原则的优点在于任何由DI框架注入的类都易于使用模拟对象进行测试并且更易于维护,因为对象创建代码集中在框架中而客户端代码中则没有。
  • 实现依赖注入的方法有多种,比如使用字节码插入,这是一些AOP(面向方面编程)框架(如AspectJ)所做的,或者使用代理(如Spring中使用的代理)。请参阅IOC和DI设计模式的示例,以进一步了解这个可靠的设计原则。

以上所述就是小编给大家介绍的《Java中面向对象的设计原则》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Applications (Hacking Exposed)

Web Applications (Hacking Exposed)

Joel Scambray、Mike Shema / McGraw-Hill Osborne Media / 2002-06-19 / USD 49.99

Get in-depth coverage of Web application platforms and their vulnerabilities, presented the same popular format as the international bestseller, Hacking Exposed. Covering hacking scenarios across diff......一起来看看 《Web Applications (Hacking Exposed)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具