设计模式6大基本原则之(二)

上一篇博客中介绍了设计模式6大基本原则的前三个,这篇博客将着重介绍剩下的三个基本原则。

里氏代换原则(Liskov Substitution Principle)

子类必须能够替换掉它的父类。也就是说子类可以扩展父类的功能,但不能改变父类原有的功能。

遵循里氏代换原则的好处?

由于子类型的可替换性才使得使用父类的模块在无需修改的情况下就可以扩展。

打个比方说,香蕉是水果的一种,香蕉具有水果的特性。假如有一天我们需要再增加苹果、橘子、苹果拥有水果

的特性,由于都是继承于水果,除了更改实例化的地方程序的其他地方不需要修改。

小编寄语:我觉得里氏代换原则是继承的特殊形式,里氏代换原则对继承做了要求,遵循里氏代换的子类包含

于继承。通过里氏代换原则使扩展性增强,实现了开放—封闭原则。

迪米特法则(Law Of Demeter)

如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类

的某一方法的话,可以通过第三者转发这个调用。

问题的由来?

类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。

小编寄语:举个例子比如我们去饭店吃饭,我们并不需要直接去找厨师,如果每个人都找厨师说自己吃什么那么

出事的额效率该有多低啊,所以最好的办法是找一个“中介”也就是服务员,顾客通过服务员向厨师传递信息。这样

厨师只管做饭就可以了,饭店的效率就大大提升了。其实也就是降低了顾客和厨师之间的耦合度。又回归到面向对象

的原则上了。

凡是都有个度,比如将所有的信息都通过“中介”来传递信息,那么就会导致“中介”信息信息量变大,系统的

复杂程度加大。所以在采用迪米特法则时要反复权衡,既做到结构清晰,又要高内聚低耦合。

接口隔离原则(Interface Segregation Principle)

客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

怎么实现?

将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。

接口隔离与单一职责的区别与联系?

很多人会觉的接口隔离原则跟之前的单一职责原则很相似,其实不然。其一,单一职责原则原注重的是职责;而

接口隔离原则注重对接口依赖的隔离。其二,单一职责原则主要是约束类,其次才是接口和方法,它针对的是程序中

的实现和细节;而接口隔离原则主要约束接口接口,主要针对抽象,针对程序整体框架的构建。

小编寄语:举个例子,接口就好比在十字路口行车,如果没有红绿灯,所有车都自由行使,那么交通必然很是拥

挤,也会事故不断。但如果有了红绿灯,不同的时间人们走不同的路线,将十字路口分了好几个方向,这样效率就会

大大提高。

运用接口原则时要注意:

接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口

数量过多,使设计复杂化。所以一定要适度。

为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模

块提供定制服务,才能建立最小的依赖关系。提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。

运用接口隔离原则,一定要适度,接口设计的过大或过小都不好。

文末小结

六大设计原则告诉们:单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依

赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要

降低耦合。而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。

设计模式的6大基本原则,其实是在面向对象的基础上发展而来的,通过他们实现了面向对象的三大基本特性继

承、封装和多态,从而提高程序的内聚性降低耦合性,使程序可维护、复用、可扩展、灵活性好。但是一切事物都有

个度,在运用这些原则的时候不能一味地生硬的用下去,在用之前一定要好好思量,从系统的整体性能出发,最大限

度地提高系统的灵活性。

设计模式6大基本原则之(二)

时间: 2024-08-11 11:11:57

设计模式6大基本原则之(二)的相关文章

面向对象设计模式5大基本原则

"宇宙万物之中,没有一样东西能像思想那么顽固."        一爱默生 首先明确模式是针对面向对象的,它的三大特性,封装.继承.多态. 面向对象设计模式有5大基本原则:单一职责原则.开发封闭原则.依赖倒置原则.接口隔离原则.Liskov替换原则. 而设计模式都是在面向对象的特性以及5大基本原则的基础上衍生而来的具体实现. 1.单一职责原则(SRP): 1.1,SRP(Single Responsibilities Principle)的定义:就一个类而言,应该仅有一个引起它变化的原因

设计模式大总结(二)

上篇博客给大家介绍了六大原则和设计模式之间的关系,以及创建型模式和结构型模式 (http://blog.csdn.net/zhangzijiejiayou/article/details/32712779).本文将给大家介绍行为型模式. 行为型模式 是对在不同的对象之间划分职责和算法的抽象化. 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到 通知并被自动更新. 优点:在解耦合,让耦合的双方都依赖于抽象的接口而不是具体,从而使各自的变化都不会影响

[转]使用设计模式改善程序结构(二)

使用设计模式改善程序结构(二) 在本系列的 第一篇文章中,描述了如何通过设计模式来指导我们的程序重构过程,并且着重介绍了设计模式意图.动机的重要性.在本文中我们将继续上篇文章进行讨论,这次主要着重于设计模式的适用性,对于设计模式适用性的掌握有助于从另一个不同的方面来判断一个设计模式是否真正适用于我们的实际问题,从而做出明智的选择. 1. 回顾 在上一篇文章中,我们给出了一个使用设计模式来改善程序结构的例子,着重介绍了设计模式的意图.动机在我们程序重构过程中的指导作用. 现在,我们将关注设计模式的

Java经典23种设计模式之结构型模式(二)

接上篇,本文介绍结构型模式里的组合模式.装饰模式.外观模式. 一.组合模式(Composite) 组合模式:将对象组合成树形结构,表示"部分--整体"的层次结构.最终达到单个对象和组合对象的使用具有一致性.单看这句话貌似有点抽象,其实比较简单. 以李云龙的独立团为例,目的要统计赵嘉宇一战共歼灭敌人多少个.最高的级别是团,一个团有若干个营,一个营有若干个排,一个排有若干个战士.(为了简化问题,排下面就不设行政单位了).很自然的,李云龙给营长开会回去给老子统计.营长回去给各个排长开会,赶紧

设计模式--6大原则--单一职责原则

单一职责原则(Single Responsibility Principle),简称SRP. 定义: There should never be more than one reason for a class to change. 应该有且仅有一个原因引起类的变更. 有时候,开发人员设计接口的时候会有些问题,比如用户的属性和用户的行为被放在一个接口中声明.这就造成了业务对象和业务逻辑被放在了一起,这样就造成了这个接口有两种职责,接口职责不明确,按照SRP的定义就违背了接口的单一职责原则了. 下

蚂蚁变大象:浅谈常规网站是如何从小变大的(二)(转)

原文:http://blog.sina.com.cn/s/blog_6203dcd60100xokd.html          [第四阶段 : 第一次服务多机化] 当IO性能得到解决以后,我们可能就会面临CPU瓶颈,即程序处理不过来了.那这个时候,最好的方式,就是优化程序.从整体架构和具体业务逻辑上去分析并做优化(可以借助一些性能分析工具,如gprof,xprof等).根据之前的经验,反射.正则表达式.字符串拼接.内存拷贝等是吃CPU的大户,所以优化上可以重点考虑.通过性能优化,一般可以将性能

设计模式--6大原则--开闭原则

开闭原则(Open Closed Principle) 开闭原则的核心是:对扩展开放,对修改关闭 白话意思就是我们改变一个软件时(比如扩展其他功能),应该通过扩展的方式来达到软件的改变,而不应爱修改原有代码来实现变化 开闭原则算是前5中原则的一个抽象总结,前五种是开闭原则的一些具体实现,所以如果使用开闭原则,其实有点虚,因为它没有一个固定的模式,但是最终保证的是提高程序的复用性.可维护性等要求 要使用这一原则还需要结合着它的思想"对扩展开放,对修改关闭"与其他的五大设计原则根据经验来开

蔡先生论道大数据之二 , 国外互联网公司的大数据应用

第一章我阐述了大数据的前世今生,今天我们来看看国外大公司如何利用和布局大数据的. IBM IBM是商业分析和大数据技术的最活跃厂商之一.早在大数据概念进入媒体视野之前,IBM就提出"智慧地球"的说法,其核心是把"智慧"嵌入系统和流程之中,使服务的交付.产品开发.制造.采购和销售得以实现,使亿万人生活和工作的方式变得更加智慧.现在,大数据技术为IBM提供了一种实现途径.近年来,IBM先后投资了SPSS.Clarity.penPages.i2.Algorithmics等

设计模式——6大设计原则

1.单一职责原则 单一职责原则的英文名称是Single Responsibility Principle,简称是SRP. 单一职责的定义是:有且仅有一个原因引起类的变更. 单一职责原则要求一个接口或者一个类只有一个原因引起变化,也就是说一个接口或类只有一个职责,它就负责一件事情. 建议是:接口一定要做到单一职责,类的世界尽量做到只有一个原因引起变化.2.里氏替换原则 里氏替换原则的英文名称是Liskov Substitution Principle,简称是LSP. 里氏替换原则的定义:所有引用基