面向对象设计的设计原则
在设计面向工具的程序的时,模式不是一定要套的,可是有一些原则最好是遵守。这些原则已知的有七个,包罗:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特规则、接口隔离原则,单一职责原则。
原则简介
其中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,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
热门文章
使用“扫一扫”即可将网页分享至朋友圈。