设计模式之设计原则学习

设计模式的设计原则包含了:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则和开闭原则等6大原则。

单一职责原则(Single Responsibility Principle,简称SRP),英文介绍为:There should never be more than one reason for a class to change,即一个类,应当只有一个引起它变化的原因。单一职责原则,要求对象不能承担太多的职责,充分保证对象的高内聚。单一职责的优点有:1、降低了类的复杂性;2、提高了类的可读性;3、提高了代码的可维护性和复用性;4、降低因变更引起的风险。

里氏替换原则(Liskov Substitution Principle, 简称LSP),它有两种英文定义:其一为If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of S, the behavior of P is unchanged when o1 is substituted
for o2 then T is a subtype of S。意思是,如果对一个类型为S的对象o1, 都有类型为T的对象o2,使得以S定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型T是类型S的子类型。其二为Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.意思是,所有引用基类的地方必须能透明地使用其子类对象。

依赖倒置原则(Dependence Inversion Principle,简称DIP),英文介绍为:High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend
upon abstractions. 中文解释为:高层模块不应该依赖于底层模块,两者都应依赖于抽象;抽象不应依赖于细节;细节应该依赖于抽象。

接口隔离原则(Interface Segregation Principle, 简称ISP),英文介绍为:Clients should not be forced to depend upon interfaces that they don‘t use,即客户端不应该依赖它不需要的接口。接口隔离原则要求:1、一个类对另外一个类的依赖性应当是建立在最小的接口上的;2、一个接口代表一个角色,不应当将不同的角色都交给一个接口;3、不应该强迫客户依赖他们不适用的方法。

迪米特法则(Law of Demeter, 简称LoD),又称最少知识原则(Least Knowledge Principle,简称LKP),意思是一个对象应当对其他对象尽可能少的了解。依据迪米特法则,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用;如果一个类需要调用两一个类的某个方法,可以通过第三者转发这个调用。例如:某人与一个朋友组成自己的朋友圈,两个人都与一个圈外的陌生人发生相互作用即不符合迪米特法则。如果某人不直接与陌生人发生作用,而是通过朋友与陌生人发生相互作用则符合迪米特法则。

开闭原则(Open-Closed Principle,简称OCP),英文解释为:Sofeware  entities should be open for extension, but closed for modification。即,一个软件应该对扩展开放,对修改关闭。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 16:50:14

设计模式之设计原则学习的相关文章

设计模式——设计模式与设计原则

设计模式--设计模式与设计原则 一.设计模式  1.设计模式简介 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石. 模式的经典定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的解决方案,无需再

设计模式与设计原则简介(一)

什么是设计模式? 我们知道对于很多数学问题,经常会有多种不同的解法 而且这其中可能会有一种比较通用简便高效的方法 我们在遇到类似的问题或者同一性质的问题时,也往往采用这一种通用的解法 将话题转移到程序设计中来 对于软件开发人员, 在软件开发过程中, 面临的一般问题的解决方案就是设计模式(准确的说是OOP中) 当然,如同数学的解题思路一样,设计模式并不是公式一样的存在 设计模式(Design pattern)代表了最佳的实践 是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的宝贵经验 是

设计模式 - 七大设计原则(一)

设计模式 - 七大设计原则(一) 概述 简单介绍一下七大设计原则: 开闭原则:是所有面向对象设计的核心,对扩展开放,对修改关闭 依赖倒置原则:针对接口编程,依赖于抽象而不依赖于具体 单一职责原则:一个接口只负责一件事情,只能有一个原因导致类变化 接口隔离原则:使用多个专门的接口,而不是使用一个总接口 迪米特法则(最少知道原则):只和朋友交流(成员变量.方法输入输出参数),不和陌生人说话,控制好访问修饰符 里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能 合成复用原则:尽量使用对象组

设计模式之设计原则(中)

接口隔离原则(Interface Segregation Principle ),简称ISP:该原则核心思想就是客户端不应该被强迫实现一些不会使用的接口,应该把胖接口中的方法分组,然后用多个接口来代替,每一个接口只服务与一个子模块.这个跟上次分享的单一职责原则类似. 设计接口隔离原则的目的:当我们设计应用程序时,如果一个模块包含多个子模块,那我们应该正对该模块抽象.设想该模块由一个类实现,我们可以把系统抽象成一个接口,但是我们想要添加新的模块扩展程序时,如果要添加的模块只包含原来系统的一些子模块

设计模式与设计原则

0.0 什么是设计模式与设计原则: 设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用设计模式是为了重用代码.让代码更容易被他人理解.保证代码可靠性.设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样. 0.1 什么是设计原则: 设计原则是设计模式的基础,所有设计模式都必须遵循设计原则. 设计原则共有七条:单一职责原则.开放-封闭原则.里氏替换原则.依赖倒转原则.接口隔离原则.组合重用原则.迪米特原则. 1. 单一职责原则(Sing

设计模式之设计原则 C#

成为一名资深架构师首先要懂设计模式,在懂之前,要清楚设计原则,原来我就吃过这个亏,很久以现有人问我设计原则,我是一头茫然,不是只有设计模式吗?且不知设计原则就像是写书法一样,楷体就是方正,竖道有垂露等,隶书横有蚕头燕尾等. 这些"秩序"遵循SOLID architecture principles.这组面向对象的设计原则,通过实践总结为 1),SRP(Single Responsibility Principle):单一责任原则: A class should take care of

设计模式--六大设计原则

1.单一职责原则(SRP ) 定义:Single Responsibility Principle ? 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来: ? 类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障. 解决方案: ? 遵循单一职责原则.分别建立两个类T1.T2,使T1完成职责P1功能,T2完成职责P2功能.这样,当修改类T1时,不会使职责P2发生故障风险:同理,当修改T2

设计模式 - 七大设计原则(二)

概述 简单介绍一下七大设计原则: 开闭原则:是所有面向对象设计的核心,对扩展开放,对修改关闭 依赖倒置原则:针对接口编程,依赖于抽象而不依赖于具体 单一职责原则:一个接口只负责一件事情,只能有一个原因导致类变化 接口隔离原则:使用多个专门的接口,而不是使用一个总接口 迪米特法则(最少知道原则):只和朋友交流(成员变量.方法输入输出参数),不和陌生人说话,控制好访问修饰符 里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能 合成复用原则:尽量使用对象组合(has-a)/聚合(conta

【设计模式】设计原则--面向接口编程你理解的对吗?

最近看了<Head First Design Patterns>这本书.正如其名,这本书讲的是设计模式(Design Patterns),而这本书的第一章,讲的是很重要的一些设计原则(Design Principles). Identify the aspects of your application that vary and separate them from what stays the same.(识别应用程序中各个方面的变化,并将它们与保持不变的部分分开.) Program to