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

设计模式——六大原则

 
阅读更多

在有了C#语言基础后,在学习设计模式以前,我们还需要学习设计模式的原则,这是设计模式的前提,是我们判断设计是否合理的准则。所以在这篇博客我先学习总结设计模式的原则。

一,单一职责原则(SingleResponsibility Principle,简称SRP):

准确解释:就一个类而言,应该仅有一个引起它变化的原因。

通俗理解:就像P3专门用来听歌,照相机专门用来照相,电视专门用来看电视,收音机专门用来收听广播……它们都有专一的功能,而且做的都非常好,而不要像现在有些手机什么功能都有,却那个功能都做不好。

违背的后果:如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它功能的能力,这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到破坏。

二,开放—封闭原则(OCP,Open Closed Principle):

准确解释:软件实体(类,模块,函数等等)应该可以扩展,但是不可以修改。

通俗理解:可以从两个方面理解:一,软件实体对于扩展是开放的(open for extension);二,软件实体对于更改是封闭的(closed for modification).也就是说,对于软件实体,我们可以增加一些功能,但是不能修改已实现的功能。也可以说,面对需求,对程序的改动是通过增加新代码来进行的,而不是去修改现有的代码。

重要性:开放—封闭原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护,可扩展,可复用,灵活性好。当然,对于应用程序中的每个部分都刻意的进行抽象同样不是一个好主意,拒绝不成熟的抽象和抽象本身同样重要。

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

准确解释:A,高层模块不应该依赖底层模块。两个都应该依赖抽象;B,抽象不应该依赖细节,细节应该依赖抽象。

通俗理解:就是我们要针对接口编程,而不是针对实现编程。举个非常简单的例子,生活中我们的电脑。如果我们的硬盘坏了,换硬盘就可以,主板坏了换主板,内存坏了换内存。也就是说这些零件之间都不相互依赖,而是依赖那个插口。而软件的依赖倒转原则,也就是要达到这种效果。也就是我们经常说的高内聚低耦合。

作用:依赖倒转其实可以说是面向对象设计的标识,用哪种语言编程并不重要,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象的设计。

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

准确解释:子类型必须能够替换掉它们的父类型;

通俗理解:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它觉察不出父类对象和子类对象的区别。也就是说在软件里边,把父类都替换成它的子类,程序的行为没有变化。

作用:有了这个原则,只有当子类可以替换掉父类,软件单位的功能不受到影响,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。这里体现继承的效果。

五,迪米特法则(Law ofDemeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP):

准确解释:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。

通俗理解:还是举个例子,一个公司的各个部门通过经理联系起来,经理来协调彼此之间的工作,而两个部门之间没有必要去打交道。回到编程中就是每个类都应当尽量降低成员的访问权限。

根本思想: 就是强调了类之间的松耦合,进而类之间的耦合越弱,越有利于复用。

六,合成聚合复用原则(CompositionAggregation 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) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序...

    Java23种基本的设计模式整料整理学习源码示例zip

    设计模式的六大原则 开闭原则(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万字(不包括附录) ...

    招投标管理系统设计方案.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. 招投标业务...

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

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

    招投标管理系统设计方案(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. 招投标业务...

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

    今天,我们正是秉承"执行、清晰、分享"的先进企业文化,坚持"励精图治、追求卓越"的精神,胸怀"志存高远、担当道义"的气质,务实"用数据说话、按流程办事、无障碍沟通"的原则,奋力实现"持续发展、多方共赢"的局面...

Global site tag (gtag.js) - Google Analytics