| 面向对象的5条基本设计原则 |
| 作者:黄业宇 |
这几天重新看了一遍《大话设计模式》,发现果然有不同的感悟,而且自己也上网找了《敏捷软件开发—原则、模式与实践》一书来看,那本书的序言中有一段话我觉得很有道理:“美的东西比丑的东西创建起来更廉价,也更快捷。”设计一个软件不关要追求代码的优雅问题,更关乎生产成本等。技术大师们在对软件架构的研究中经历了很长时间的摸索,从面向过程到面向对象,从设计原则到设计模式,总结了许多设计上的经典法则,而我们就只是站在巨人的肩膀上眺望远方而已。 对于开放封闭原则,它是面向对象所有原则的核心,软件设计说到底追求的目标就是封装变化、降低耦合,而开放封闭原则就是这一目标的最直接体现。 对于依赖倒置原则,其核心思想是:依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。 对于Liskov替换原则,其核心思想是:子类必须能够替换其基类。这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。在父类和子类的具体行为中,必须严格把握继承层次中的关系和特征,将基类替换为子类,程序的行为不会发生任何变化。同时,这一约束反过来则是不成立的,子类可以替换基类,但是基类不一定能替换子类。 以上就是5个基本的设计原则,它们就像面向对象程序设计中的金科玉律,遵守它们可以使我们的代码更加鲜活,易于复用,易于拓展,灵活优雅。不同的设计模式对应不同的需求,而设计原则则代表永恒的灵魂,需要在实践中时时刻刻地遵守。就如ARTHUR J.RIEL在那边《OOD启示录》中所说的:“你并不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看做警铃,若违背了其中的一条,那么警铃就会响起。” |
相关推荐
Scrapy爬虫之热门网站数据爬取--------第2关
第2关:小说网站玄幻分类第一页小说爬取 任务描述 本关任务:爬目标网页的3本小说保存到本地MySQL数据库,目标网页为全书网玄幻分类首页。 注:考虑到单机(非分布式)爬虫的爬取时间和测试平台的压力,我们不爬更多页数的小说了,可以作为课下作业自己完善。 xpath匹配:循环获取相同标签下的内容 通过网页分析,我们在获取小说的章节名时,发现他们都在标签<DIV class="clearfix dirconone">下的li的a中: 这时,我们可以先把其中所有的li标签先获取到: titles = r
面向对象的设计的7大原则
面向对象的设计的7大原则
OSG三维渲染引擎编程学习之一:“第一章:OSG介绍” 之 “1.1 OSG简介”
第一章:OSG介绍; 1.1 OSG简介。
面向对象设计的原则详解
引言 面向对象设计的原则是软件工程中的一套指导思想,旨在帮助开发者设计出结构良好、易于维护、可扩展和可复用的软件系统。以下是面向对象设计中最著名的五个原则,通常被称为 SOLID 原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则。除了 SOLID 原则之外,还有其他的面向对象设计原则,比如迪米特法则、组合/聚合复用原则、最少知识原则。
面向对象设计模式5大基本原则
“宇宙万物之中,没有一样东西能像思想那么顽固。” 一爱默生 首先明确模式是针对面向对象的,它的三大特性,封装、继承、多态。 面向对象设计模式有5大基本原则:单一职责原则、开发封闭原则、依赖倒置原则、接口隔离原则、Liskov替换原则。 而设计模式都是在面向对象的特性以及5大基本原则的基础上衍生而来的具体实现。 1、单一职责原则(SRP): 1.1,SRP(Single Responsibilities Principle)的定义:就一个类而言,应该仅有一个引起它变化的原...
面向对象的设计原则(七大原则)
● 如果一个接口a继承另一个接口b,则接口a相当于继承了接口b的方法,那么继承了接口b之后,接口a也应该遵循上述原则:不应该包含用户不使用的方法。在一个应用程序中,我们有一些低层次的类,这些类实现了一些基本的或者初级的操作,我们称之为低层模块;一个良好的设计应该是系统的每一部分都是可替换的。○ 当子类单独的方法重载父类的方法时,方法的前置条件(即方法的输入/入参)要比父类方法的输入参数更宽松;一个类只负责一个功能另有中的相应职责----------就一个类而言,应该只有一个引起它变化的原因;
面向对象软件设计原则
n 单一职责原则(SRP)就一个类而言,应该仅有一个引起它变化的原因。n 开放-封闭原则(OCP)软件实体应该是可以扩展的,但是不可修改。n Liskov替换原则(LSP)子类型必须能够替换掉它们的基类型。n 依赖倒置原则(DIP)抽象不应该依赖于细节。细节应该依赖于抽象。n 接口隔离原则(ISP)不应该强迫客户
2811




被折叠的 条评论
为什么被折叠?



