2019年1月31日

设计模式之接口隔离原则

接口隔离原则,英文缩写ISP,全称Interface Segregation Principle。

原始定义:Clients should not be forced to depend upon interfaces that they don't use,还有一种定义是The dependency of one class to another one should depend on the smallest possible interface。

官方翻译:其一是不应该强行要求客户端依赖于它们不用的接口;其二是类之间的依赖应该建立在最小的接口上面。简单点说,客户端需要什么功能,就提供什么接口,对于客户端不需要的接口不应该强行要求其依赖;类之间的依赖应该建立在最小的接口上面,这里最小的粒度取决于单一职责原则的划分。

 

在这里提一下单一职责和接口隔离原则的区别。首先两个侧重点是不一样的,单一职责要求类和接口,或者方法的职责单一,侧重点在职责,这是根据业务逻辑进行划分的。

而接口隔离原则在此前的基础上接口中的方法尽量少。比如,一个接口或者一个中有十个方法,不同的方法做不同的事情,但是这个接口职责上总体就是处理一件事情,然后具体细分成了10个方法。不同的模块根据不同的权限进行访问,这是符单一职责原则的。

但是按照接口隔离的原则是要求接口接口中的方法尽量少,落实到这个实例就是要求尽量多几个专门的接口供不同的模块使用,而不是只有一个臃肿的接口,依据权限去限制不同模块可以访问的方法。

 

举一个图书管理系统的例子,有一个查询接口BookSearch,包括如下方法:searchById,searchByBookName,searchByCategory,complexSearch,其中前三个方法是提供给学生使用的,后一个方法是提供给管理员使用的,学生对这个方法的访问是有限制的,调用不会返回任何值。当这四个方法全部公布出去之后,学生对此方法的访问即使不返回任何值也会使服务器性能下降。

因此合理的设计应该是拆分这个接口为两个接口:SimpleSearch和AdminSearch。

SimpleSearch接口提供searchById,searchByBookName,searchByCategory方法,

AdminSearch接口提供complexSearch方法,

此时学生实现SimpleSearch接口即可,管理员同时实现SimpleSearch和AdminSearch两个接口。

posted @ 2019-01-31 22:35 lovebeauty 阅读(420) 评论(0) 推荐(0) 编辑

设计模式之迪米特法则

摘要: 迪米特法则(Law of Demeter,简称LoD) 低耦合,一个对象应该对其他对象保持最少的了解(中介者模式就是这个的应用) 核心思想: 类间解耦。 通俗来讲: 一个类对自己依赖的类知道的越少越好。自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编 阅读全文

posted @ 2019-01-31 22:05 lovebeauty 阅读(374) 评论(0) 推荐(0) 编辑

设计模式之开闭原则

摘要: 开放封闭原则(Open Close Principle,简称OCP)尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化 原始定义:Software entities (classes, modules, functions) should be open for extensi 阅读全文

posted @ 2019-01-31 18:06 lovebeauty 阅读(323) 评论(0) 推荐(0) 编辑

2019年1月30日

设计模式之依赖倒置原则

摘要: 依赖倒置原则(Dependence Inversion Principle,简称DIP)面向接口编程,多态(接口类或者抽象类) 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖实现类;实现类应该依赖抽象。 一旦依赖的低层或者具体类改动,则高层可能会需要改动。 错误做法: //高层Dr 阅读全文

posted @ 2019-01-30 18:01 lovebeauty 阅读(441) 评论(0) 推荐(0) 编辑

2019年1月24日

设计模式之里氏替换原则

摘要: 里氏替换原则(Liskov Substitution Principle,简称LSP): 子类可以替换父类 继承有一些优点: 任何基类可以出现的地方,子类一定可以出现。里氏替换原则是继承复用的基石,只有当衍生类可以替换基类,软件单位的功能不受到影响时,即基类随便怎么改动子类都不受此影响,那么基类才能 阅读全文

posted @ 2019-01-24 16:26 lovebeauty 阅读(25448) 评论(5) 推荐(6) 编辑

2019年1月23日

设计模式之单一职责原则

摘要: 一.单一职责(Single Responsibility Principle,简称SRP ): 一个类只负责一项职责 原始定义:There should never be more than one reason for a class to change。 官方翻译:应该有且仅有一个原因引起类的变 阅读全文

posted @ 2019-01-23 22:49 lovebeauty 阅读(339) 评论(0) 推荐(0) 编辑

2019年1月21日

设计模式六大原则

摘要: 这些原则实现的最高目标是: 系统灵活稳定易于维护、扩展需求,而不是牵一发而动全身 一.单一职责(Single Responsibility Principle,简称SRP ): 一个类只负责一项职责 不要存在多于一个导致类变更的原因。通俗的说,即一个类的代码只负责一项职责。 二.里氏替换原则(Lis 阅读全文

posted @ 2019-01-21 21:05 lovebeauty 阅读(510) 评论(2) 推荐(0) 编辑

2019年1月13日

spring boot 搭建

摘要: http://www.ityouknow.com/springboot/2018/06/12/spring-boo-java-simple.html 在http://start.spring.io/下载项目之后,解压,导入项目等待compile(相当于在cmd命令下进入此目录窗口,运行mvn com 阅读全文

posted @ 2019-01-13 21:33 lovebeauty 阅读(230) 评论(0) 推荐(0) 编辑

2018年10月30日

OSI(Open System Interconnect) 网络七层协议

摘要: 你作为用户想发个快递,你叫来了顺丰,顺丰快递员从你手里拿走了快递,又装进一个盒子,然后把一个快递单子贴在了上面。 快递员回到集散中心,将快递往那一扔不管了,分拣员把快递按投递的省市分开,发往同一地区的快递放进一个大快递包。快递包上有一个单子。 晚上大车司机来了,只把他城市的快递包放上车,然后开车只管 阅读全文

posted @ 2018-10-30 17:10 lovebeauty 阅读(385) 评论(0) 推荐(0) 编辑

2018年10月29日

常用经济术语

摘要: M0=流通中现金,与消费变动密切相关,是最活跃的货币。 M1(狭义货币)=M0+企业活期存款+个人持有的信用卡类存款。 M2(广义货币)=M1+企业定期存款+城乡居民储蓄存款,通常所说的货币供应量就是指M2,M2与M1的差额是准货币。 但以往货币基金赎回是T+2,目前余额宝已是T+0到账,流动性发生 阅读全文

posted @ 2018-10-29 12:24 lovebeauty 阅读(776) 评论(0) 推荐(0) 编辑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示