面向对象设计原则七:接口隔离原则

接口隔离原则(ISP)
  定义:使用多个专门的接口比使用单一的总接口要好。即不要把鸡蛋都放到一个篮子里。
  好处:比较灵活、方便,不想实现的或不用实现的可以不实现。
解释说明:
  大部分人都喜欢用一个接口把需要用到的方法全部声明出来,但是ISP建议我们使用多个专门的接口比使用单一的总接口要好,也就是一个接口里的方法多的话,实现起来不是很方便。

示例1:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace 接口隔离原则
 8 {
 9     /// <summary>
10     /// 定义一个学习电脑的接口
11     /// </summary>
12     public interface ILearnComputer
13     {
14     }
15
16     /// <summary>
17     /// 定义一个上网电脑的接口
18     /// </summary>
19     public interface INetComputer
20     { }
21
22     /// <summary>
23     /// 定义一个学生电脑类,实现学习电脑的接口和上网电脑的接口
24     /// </summary>
25     public class StudentComputer : ILearnComputer, INetComputer
26     {
27         public void Learn()
28         {
29             Console.WriteLine("学习");
30         }
31
32         public void NetPlay()
33         {
34             Console.WriteLine("上网");
35         }
36     }
37 }

在上面的示例代码中,定义了两个接口,一个具体的电脑类实现了两个接口。如果只想上网,只实现上网的接口就可以;如果只想学习,则只实现学习的接口就可以。

示例2:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace 接口隔离原则
 8 {
 9     /// <summary>
10     /// 定义一个学习电脑的接口
11     /// </summary>
12     public interface ILearnComputer
13     {
14     }
15
16     /// <summary>
17     /// 定义一个上网电脑的接口
18     /// </summary>
19     public interface INetComputer
20     { }
21
22     /// <summary>
23     /// 定义一个学生电脑的抽象类,实现学习电脑的接口和上网电脑的接口
24     /// </summary>
25     public abstract class StudentComputer : ILearnComputer, INetComputer
26     {
27         public abstract void Learn();
28
29         public abstract void NetPlay();
30     }
31 }

具体操作时,抽象类和接口搭配进行使用。使用抽象类实现接口,在调用的时候使用抽象类进行变量的声明。

  

时间: 2024-08-09 03:10:21

面向对象设计原则七:接口隔离原则的相关文章

面向对象原则之一 接口隔离原则

原文:面向对象原则之一 接口隔离原则 前言 面向对象有人分为五大原则,分别为单一职责原则.开放封闭原则.依赖倒置原则.接口隔离原则.里氏替换原则. 也有人分为六大原则,分别为单一职责原则.开放封闭原则.依赖倒置原则.接口隔离原则.里氏替换原则.迪米特法则. 现在我们来介绍接口隔离原则 接口隔离原则 1)概念 客户端不应该依赖它不需要的接口.一个类对另一个类的依赖应该建立在最小的接口上. 怎么理解呢?通俗一点就是说接口尽量细分,把不需要的方法尽量写在2个不同的接口上. 假如我有一个接口Interf

设计原则之接口隔离原则

segregate   v.隔离 se 蛇  gre green格林  gate门 蛇被格林用门隔离了. 设计原则之接口隔离原则 动机:         客户不应该被强制实现他们不用的方法.应该用多个小的接口代替庞大功能全的接口. 结论:        该原则在代码设计的时候就要考虑.可以使用适配器模式将胖接口隔离. Bad Example:    缺点:         1.如果新增一个robot机器人工人,那么eat方法就是多余的了. // interface segregation pri

面向对象的六大原则之 接口隔离原则——ISP

ISP = Interface Segregation Principle ISP的定义如下: 1.客户端不应该依赖他不需要的接口 2.一个类对另外一个类的依赖性应该是建立在最小的接口上 3.不应当将不同的接口合并在一起,形成一个臃肿的大接口,这是对接口的污染 4.使用多个专门的接口要比使用单一的总接口要好 ISP的几个使用原则 1.根据接口隔离原则拆分接口时,首先必须满足单一职责原则: 没有哪个设计可以十全十美的考虑到所有的设计原则,有些设计原则之间就可能出现冲突,就如同单一职责原则和接口隔离

设计模式原则之接口隔离原则

在讲接口隔离原则之前,我们先明确一下我们的主角,什么是接口,接口分为两种: 一种是实例接口 (Object Interface),在 Java 中声明一个类,然后用 new 关键字产生的一个实例,它是对一个类型的事 物描述,这是一种接口,比如你定义个 Person 这个类,然后使用 Person zhangSan = new Person()产生了 一个实例,这个实例要遵从的标准就是 Person 这个类,Person 类就是 zhangSan 的接口,看不懂?不要紧, 那是让 Java 语言浸

深入理解JavaScript系列(21):SOLID五大原则之接口隔离原则ISP(转载)

深入理解JavaScript系列(21):SOLID五大原则之接口隔离原则ISP 前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第4篇,接口隔离原则ISP(The Interface Segregation Principle). 英文原文:http://freshbrewedcode.com/derekgreer/2012/01/08/solid-javascript-the-interface-segregation-principle/注:这篇文章作者写得

面向对象设计原则之接口隔离原则

接口隔离原则定义如下: 接口隔离原则(Interface  Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口. 根据接口隔离原则,当一个接口太大时,我们需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可.每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干.这里的“接口”往往有两种不同的含义:一种是指一个类型所具有的方法特征的集合,仅仅是一种逻辑上的抽象:另外一种是指某

设计模式之禅--六大设计原则之接口隔离原则

设计模式就是让我们更方便的解决问题. 这里分享一个故事.我有一个朋友,嗯没错就是一个朋友,参加一个软件比赛,一个同学写服务器上的代码,三天两头更新,丝毫不考虑写客户端的人的感受,简直不能再牛.如果Java的更新有这么一次,没有考虑在不影响以前代码的基础上做修改,得有多少程序员吐血身亡. 接口隔离原则的定义: 建立单一接口,不要建立臃肿放大的接口.接口尽量细化,同时接口中的方法尽量少. 这不是单一职责原则,单一职责要求的是类和接口的职责单一,注重的是职责,这是业务逻辑上的划分,而借口隔离原则要求接

6大设计原则之接口隔离原则

接口隔离原则的定义 什么是接口. 实例接口,比如定义了一个Person类,然后 Person p = new Pserson(); 产生一个实例,Person类就是 p 的接口 类接口,就是Java中使用 interface 定义的接口 什么是隔离 隔离要求将接口尽量细化,同时接口中的方法尽量少. 接口隔离原则的实现 比如现在有一个人,他身兼数职,是一个老师,要教书,是一个学生,要学习,类图如下: 如果有一天,他不在教书了,或者又有了新的职业,那我们还要修改调用该类的代码,更好的做法是将臃肿的接

迪米特原则与接口隔离原则

强调组件的封装性和信息隐藏的功能. 封装的越好,模块间的耦合越小: 隐藏的越好,组件的可用性越好. 在类的结构设计上,每一个类都应当尽量降低成员的访问权限 http://blog.csdn.net/wangjunkg/article/details/3762132 四.接口隔离原则 全称:“Interface Segregation Principle” 说明:使用多个专一功能的接口比使用一个的总接口总要好.从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的.过于臃肿的接

深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP

前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第4篇,接口隔离原则ISP(The Interface Segregation Principle). 英文原文:http://freshbrewedcode.com/derekgreer/2012/01/08/solid-javascript-the-interface-segregation-principle/ 注:这篇文章作者写得比较绕口,所以大叔理解得也比较郁闷,凑合着看吧,别深陷进去了 接口隔离原则的描述