加载中 ...
首页 > 新闻资讯 > 经验心得 正文

面向对象设计的设计原则

2019-03-23 07:30:35 来源:沈阳软件公司 作者:沈阳软件开发

  在设计面向工具的程序的时,模式不是一定要套的,可是有一些原则最好是遵守。这些原则已知的有七个,包罗:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特规则、接口隔离原则,单一职责原则。

  原则简介

  其中Robert C. Martin引入了SOLID的说法,包罗了其中的五个原则。另外两个,这里把他们算成分外的两个规则。详细如下。

  S . Single Responsibility Principle - SRP
  An object should have only a single responsibility.

  O . Open-Closed Principle - OCP
  Software entities should be opened for extension, but closed for modification.

  L . Liskvo Substitution Principle - LSP
  If S is a subtype of T, the objects of T in a program may be replaced by objects of Type S.

  I . Interface Segregation Principle - ISP
  many client specific interfaces are better than one general purpose interface.

  D . Dependency Inversion Principle - DIP
  Depend upon abstractions. Do not depend upon concretions.
  Program to an interface, not an implementation.

  Ex1 . Law of Demeter - LoD
    -- Principle of Least Knowledge
  A given object should assume as little as possible about the structure or properties of anything else.

  Ex2 . Composite/Aggregate Reuse Principle - CARP
  Use most composition and aggregation, less inheritance.

  根据小我私家明白,把这七个原则分成了以下两个部门。

  Design Method: SRP ISP DIP CARP
  Design Goal:   OCP LSP LoD

  各规则详细(本部门为转载)

  正如牛顿三大定律在经典力学中的位置一样,“开-闭”原则(Open-Closed Principle)是面向工具的可复用设计(Object Oriented Design或OOD)的基石。其他设计原则(里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特规则、接口隔离原则)是实现“开-闭”原则的手段和工具。

  一、“开- 闭”原则(Open-Closed Principle,OCP 

  1.1 “开- 闭” 原则的界说及优点

  1)界说:一个软件实体应当对扩睁开放,对修改关闭( Software entities should be open for extension, but closed for modification.)。即在设计一个模块的时间,应当使这个模块可以在不被修改的条件下被扩展。

  2)知足“开-闭”原则的系统的优点

    a) 通过扩展已有的软件系统,可以提供新的行为,以知足对软件的新需求,使转变中的软件系统有一定的顺应性和天真性。

    b) 已有的软件模块,特殊是最主要的抽象层模块不能再修改,这就使转变中的软件系统有一定的稳固性和延续性。

    c) 这样的系统同时知足了可复用性与可维护性。

  1.2 怎样实现“开-闭” 原则

  在面向工具设计中,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层。换言之,界说一个一劳永逸的抽象设计层,允许尽可能多的行为在实现层被实现。

  解决问题要害在于抽象化,抽象化是面向工具设计的第一个焦点本质。

  对一个事物抽象化,实质上是在归纳综合归纳总结它的本质。抽象让我们捉住最最主要的工具, 从更高一层去思索。这降低了思索的庞大度,我们不用同时思量那么多的工具。换言之,我们封装了事物的本质,看不到任何细节。

  在面向工具编程中,通过抽象类及接口,划定了详细类的特征作为抽象层,相对稳固,不需更改,从而知足“对修改关闭”;而从抽象类导出的详细类可以改变系统的行为,从而知足“对扩睁开放”。

  对实体举行扩展时,不必改动软件的源代码或者二进制代码。要害在于抽象。

  1.3 对可变性的封装原则

  “开-闭”原则也就是“对可变性的封装原则”(Principle of Encapsulation of Variation ,EVP)。即找到一个系统的可变因素,将之封装起来。换言之,在你的设计中什么可能会发生转变,应使之成为抽象层而封装,而不是什么会导致设计改变才封装。

“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与

我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。