`
20386053
  • 浏览: 433200 次
文章分类
社区版块
存档分类
最新评论

设计模式之——六大原则

 
阅读更多

单一职责原则SRP:Single Responsibility Principle)

定义:就一个类而言,应该仅有一个引起它变化的原因。

简述:不要把变化原因各不相同的职责放在一起,因为不同的变化会影响到不相干的职责。再通俗一点地说就是,不该你管的事情你不要管,管好自己的事情就可以了,多管闲事害了自己也害了别人。(当然这里说的多管闲事跟见义勇为是两回事,我们提倡见义勇为!)

开放——封闭原则OCP:Open-Close Principle)

定义:软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。

简述:第一次看这个原则的时候我都看傻了,我当时在想“这不是做白日梦吗!不修改怎么扩展啊?”但是随着学习的深入,理解了这个“不修改”是什么意思,意思是“你可以随便增加新的类,但是不要修改原来的类”。从这个角度去理解就好多了,其实这里还是一个隔离变化的问题。

依赖倒转原则DIP:Dependence Inversion Principle)

定义:抽象不应该依赖细节,细节应该依赖于抽象。

简述:只有抽象的东西才是最稳定的,也就是说,我们依赖的是它的稳定。如果将来“抽象”也不稳定了,那么谁稳定我跟谁。这其实很像日本(纵观日本的历史,哪个国家强大就傍谁)!哈哈!

里氏代换原则LSP:Liskov Substitution Principle)

定义:子类型必须能够替换它们的父类型。

简述:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。这是因为有了这个原则,使得继承复用成为了可能,当然,也使得开放-封闭成为了可能。

迪米特法则LoD:Law Of Demeter)

定义:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

简述:迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用性才可以提高。形象一点的比喻类似于:监狱内的犯人是不应该跟外面的人接触的,当然或许会有探亲的。这里的监狱就是类,里面的犯人就是类内部的信息,而监狱里的狱警就相当于迪米特法则的执行者。

合成/聚合原则CARP:Composite/Aggregate Reuse Principle)

定义:尽量使用合成/聚合,尽量不要使用类继承。

简述:合成/聚合原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。合成和聚合都是关联的特殊种类。聚合表示整体和部分的关系,表示“拥有”;合成则是一种更强的“拥有”,部分和整体的生命周期一样。合成的新的对象完全支配其组成部分,包括它们的创建和湮灭等。一个合成关系的成分对象是不能与另一个合成关系共享的。换句话说,合成是值的聚合,而一般说的聚合是引用的聚合。简短的说,合成-聚合原则(CARP)是指,尽量使用合成/聚合,而不是使用继承。

分享到:
评论

相关推荐

    GOF的23种设计模式,及设计模式的六大原则

    GOF是设计模式的经典名著Design Patterns: Elements of Reusable Object-Oriented Software(中译本名为《设计模式——可复用面向对象软件的基础》)的四位作者,他们分为是:Elich Gamma、Richard Helm、Ralph ...

    设计模式——GoF的23中设计模式幽默案例解析

    设计模式——GoF的23中设计模式幽默案例解析

    23种 设计模式---面向对象的基本原则

    NULL 博文链接:https://hudeyong926.iteye.com/blog/779070

    设计模式——JAVA.docx

    JAVA设计模式总结之23种设计模式 一:设计模式之六大原则 总原则:开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。 1.Abstract Factory(抽象工厂模式) 2.Adapter(适配器模式)......

    24种设计模式介绍与6大设计原则

    二、设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序...

    设计模式Demo

    二、设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序...

    DesignPattern:java常用的23种设计模式,以及设计原则

    1.2 六大原则 单一职责:方法、类、接口单一 里氏替换:父类出现的地方都能透明的使用其子类 覆盖或者实现父类的方法数输入参数可以被放大 覆盖或者实现父类的方法时返回值类型可以被缩小 依赖倒置:面向接口编程...

    asp.net知识库

    2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ...

    项目实施——九阴真经

    5.6.1.2 现场考察三原则 86 5.7 用户现场考察应如何组织?(下) 86 5.7.1 现场考察介绍技巧 86 5.7.2 饭桌上再烧一把火 88 6 如何做公司介绍? 88 6.1 前言(连载四十二) 88 6.2 哪些情况下需要公司介绍 88 6.3 正式...

    protel2004封装

    spacebar——绘制导线,直线或总线时,改变走线模式 v+d——缩放视图,以显示整张电路图 v+f——缩放视图,以显示所有电路部件 home——以光标位置为中心,刷新屏幕 esc——终止当前正在进行的操作,返回待命状态 ...

    软件工程-理论与实践(许家珆)习题答案

    而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术 不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力, 而在开发过程中就夭折。软件危机主要表现在两个方面: (1) ...

    软件工程大作业(国土资源政务系统)

    3系统设计的原则 3 3.1 先进性、实用性原则 3 3.2 一致性、完整性原则 4 3.3 标准化和规范化原则 4 3.4 高性能和稳定性原则 5 3.5 开放性和可扩充性原则 5 3.6 安全性、可靠性原则 5 3.7 协作性和独立性原则 ...

    智能家居设计方案.docx

    智能家居设计方案 一、安全防护方案 二、弱电布线方案 三、背景音乐方案 ——创造美好的生活方式 Our Proiect Befitting Your Lifestyle 设 计 原 则 一、可靠性原则: 各系统的主要设备和传输网络构成均采用进口、...

    数据库课设-停车场管理系统.docx

    4.3 数据库结构 数据字典、E-R图,关系数据库模式 总体实施计划 研制报告 研制过程,本规划的特点、不足,体会等 参考文献 六、设计要求: 每个学生分配一个设计题。 设计报告正文字数不少于0.5万字(不包括附录) ...

    企业文化三个设计方案.docx

    ) (八)公告栏 (及时发布公司各类信息) 企业文化三个设计方案2 为深入领悟证券企业文化之精髓,弘扬招证人先进的模范精神,调企业文化三个设计方案全文共8页,当前为第3页。企业文化三个设计方案全文共8页,当前...

    招投标管理系统方案设计.doc

    设计原则 7 统一和标准化原则 7 与办公自动化系统融合 7 安全性原则 7 技术架构 8 . 应用系统功能 10 招投标办公审批流程 10 互联网管理平台 10 招投标业务管理 10 招投标资料管理 10 培训学习管理 11 招投标系统...

    招投标管理系统设计方案.doc

    设计原则 7 3.1.1. 统一和标准化原则 7 3.1.2. 与办公自动化系统融合 7 3.1.3. 安全性原则 7 3.1.4. 技术架构 8 3.2. 应用系统功能 10 3.2.1. 招投标办公审批流程 10 3.2.2. 互联网管理平台 10 3.2.3. 招投标业务...

    招投标管理系统设计方案(1).doc

    设计原则 7 3.1.1. 统一和标准化原则 7 3.1.2. 与办公自动化系统融合 7 3.1.3. 安全性原则 7 3.1.4. 技术架构 8 3.2. 应用系统功能 10 3.2.1. 招投标办公审批流程 10 3.2.2. 互联网管理平台 10 3.2.3. 招投标业务...

    用c描述的数据结构演示软件

    本系统对屏幕设计的基本原则是集数据结构、算法和其他重要信息(如栈等)于同一屏幕。一般情况下演示屏由图示、算法和变量三个窗口组成,特殊情况下将根据演示内容适当增加。一般情况下, 左侧图示窗口显示演示数据...

Global site tag (gtag.js) - Google Analytics