0-序和面向对象的基本设计原则

最近在看《Head First设计模式》,真是一本好书,深入浅出,用具体的场景将常见的设计模式讲的很透彻。略有遗憾的是,这本书中的例子都是基于java写的,对我们这种写.Net来说看起来还是有些不过瘾。所以我把书中每个模式对应的例子用C#写了一遍,顺便对各个模式的思想和适用场景做了一些记录,对自己是一份笔记,希望对大家也能有所帮助。

在进入具体的设计模式之前,还是让我们重温一下面向对象的五个基本设计原则吧,真的是值得反复回味。

单一职责原则SRP(Single Responsibility Principle)
是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。

开放封闭原则OCP(Open-Close Principle)
一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。

替换原则(the Liskov Substitution Principle LSP)
子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。

依赖原则(the Dependency Inversion Principle DIP) 具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,
这个时候,B不应当直接使用A中的具体类: 而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。

接口分离原则(the Interface Segregation Principle ISP)
模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来

时间: 2024-10-08 17:15:41

0-序和面向对象的基本设计原则的相关文章

面向对象的基本设计原则【转】

面向对象的3个基本要素:封装.继承.多态 面向对象的基本设计原则: 单一职责原则(Single-Resposibility Principle) 其核心思想为:一个类,最好只做一件事,只有一个引起它的变化.单一职责原则可以看做是低耦合.高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因.职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而大大损伤其内聚性和耦合度.通常意义下的单一职责,就是指只有一种单一功能,不要为类实现过多的功

面向对象七大基本设计原则,今天我们就来谈谈

面向对象的七大基本原则: 原则一 单一职责原则 单一职责原则(SRP:Single responsibility principle)又称单一功能原则 核心:解耦和增强内聚性(高内聚,低耦合). 原则二:里氏替换原则(LSP:Liskov Substitution Principle) 核心:在任何父类出现的地方都可以用他的子类来替代(子类应当可以替换父类并出现在父类能够出现的任何地方) 四层含义: (1)子类必须完全实现父类的方法.在类中调用其他类是务必要使用父类或接口,如果不能使用父类或接口

面向对象的5个基本设计原则

面向对象的3个基本要素:封装.继承.多态 面向对象的5个基本设计原则: 单一职责原则(Single-Resposibility Principle) 其核心思想为:一个类,最好仅仅做一件事,仅仅有一个引起它的变化.单一职责原则能够看做是低耦合.高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来降低引起变化的原因.职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而大大损伤其内聚性和耦合度.通常意义下的单一职责,就是指仅仅有一种单一功能,不要为类实

面向对象的七种基本设计原则

面向对象的7种基本设计原则: 里氏替换原则单一职责原则依赖倒置原则接口隔离原则开放关闭原则迪米特法则(最少知道原则)合成复用原则 面向对象的3个基本要素:封装.继承.多态 1.里氏替换原则(Liskov-Substituion Principle) 核心思想为:子类可以替代父类出现的位置,而整个软件系统功能没有影响. 这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础.同时,这一约束反过来则是不成立的,子类可以替换基类,但是基类不一

面向对象的设计原则

面向对象设计原则是学习设计模式的基础,每一种设计模式都符合某一种或者多种面向对象设计原则.通过在软件开发中使用这些原则可以提高软件的可维护行和可用性,让我们可以设计出更加灵活也更加容易扩展的软件系统,实现可维护可复用的目标.在使用面向对象的思想进行系统设计时,前人共总结出了7条原则,它们分别是:单一职责原则.开闭原则.里氏替换原则.依赖注入原则.接口分离原则.迪米特原则和合成复用原则. 1.单一职责原则(SRP) 单一职责原则的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有对象

面向对象的六大原则

现在编程的主流语言基本上都是面向对象的.如C#,C++,JAVA.我们在使用时,已经构造了一个个的类.但是往往由于我们在类内部或外部的设计上存在种种问题,导致尽管是面向对象的语言,却是面向过程的逻辑,甚至维护起来异常困难.每次增加或修改功能都要改动很多的代码,如履薄冰.而面向对象的六大原则主要的目的,就是我们如何设计类,更能很好的利用面向对象的特性. 1)单一职责原则 一个类永远只有一个职责. 一套软件就像是一个团队,每个类就是团队中的一个成员.团队如果想稳定的发展.这些类就要各司其职,分工明确

面向对象思想设计原则 及常见设计模式

1.面向对象思想设计原则 在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设计原则. 1)单一职责原则:就是开发人员经常说的”高内聚,低耦合”.也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个.在设计模式中,所有的设计模式都遵循这一原则. 2)开闭原则:一个对象对扩展开放,对修改关闭.也就是说,对类的改动是通过增加代码进行的,而不是修改现有代码.软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证它能一直

零散知识点(面向对象七大设计原则,jdbc--BaseDao,jsp九大内置对象。四个作用域)

面向对象七大设计原则: 1.开闭原则(OCP:Open-Closed Principle)2.里氏替换原则(LSP:Liskov Substitution Principle) 3.单一职责原则(SRP:Single responsibility principle)4.接口隔离原则(ISP:Interface Segregation Principle)5.依赖倒置原则(DIP:Dependence Inversion Principle)6.迪米特法则(LOD:Law of Demeter)

面向对象设计模式与原则

最近在学习李建忠老师一系列的关于面向对象设计模式的课程,就想着把总结下来,以便自己以后的学习,设计模式是一个比较空洞的话题,随着我们的编程经验的积累,我们能增加对它的理解,这是一个日积月累的过程,但是我们应该在平时的编程过程中学会思考和分析,想一想在某种特定的场景下使用什么样的设计模式,怎样才能做到代码的易扩展和维护,这都是我们要思考的问题,所以掌握好设计模式能对我们的编程起到很大的作用,能让我们写出来的代码很美. 设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案,面向对象的设计模式