1    主讲内容

1.1  核心内容

1.2  优点

1.3  课程记录

2    代码演练

2.1  接口隔离原则反比

2.2  接口隔离原则正比

1    主讲内容

1.1  核心内容

总结:细粒度可以进行再组装,粗粒度不可再拆分,所以接口设计的时候尽可能适度的拆分

1.2  优点

◆优点:符合我们常说的高内聚低耦合的设计思想从而使得类具有很好的可读性、可扩展性和可维护性

1.3  课程记录

◆定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口
◆一个类对一个类的依赖应该建立在最小的接口上建立单一接口,不要建立庞大臃肿的接口
◆尽量细化接口,接口中的方法尽量少

2    代码演练

2.1  接口隔离原则反比

接口:

package com.geely.design.principle.interfacesegration; 
public interface IAnimalAction {
void eat();
void fly();
void swim();
}

狗类:

package com.geely.design.principle.interfacesegration;

public class DogCaseOne implements IAnimalAction{

    @Override
public void eat() { } /**
* 注:这里是空方法,狗不会飞,所以明显设计的不合理,最好不要有太多的空方法
*/
@Override
public void fly() { } @Override
public void swim() { }
}

百灵鸟类:

package com.geely.design.principle.interfacesegration;

/**
* 百灵鸟
*/
public class LarkCaseOne implements IAnimalAction{
@Override
public void eat() { } @Override
public void fly() { } /**
* 很明显,百灵鸟不会游泳,此处为空方法,设计不合理
*/
@Override
public void swim() { }
}

2.2  接口隔离原则正比

接口1:

package com.geely.design.principle.interfacesegration;

public interface IEat {
void eat();
}

接口2:

package com.geely.design.principle.interfacesegration;

public interface IFly {
void fly();
}

接口3:

package com.geely.design.principle.interfacesegration;

public interface ISwim {
void swim();
}

狗类:

package com.geely.design.principle.interfacesegration;

/**
* 狗只用实现 吃和游泳方法即可
*/
public class DogCaseTwo implements IEat,ISwim{
@Override
public void eat() { } @Override
public void swim() { }
}

百灵鸟类:

package com.geely.design.principle.interfacesegration;

/**
* 百灵鸟实现 吃和飞方法即可
*/
public class LarkCaseTwo implements IEat,IFly{
@Override
public void eat() { } @Override
public void fly() { }
}

设计模式课程 设计模式精讲 3-7 接口隔离原则讲解及Coding的更多相关文章

  1. 设计模式课程 设计模式精讲 3-8 迪米法特原则讲解及Coding

    1 课程讲解 1.1 定义 1.2 特质 1.3 重点 2 代码演练 2.1 反例 2.2 正例 1 课程讲解 1.1 定义 定义:一个对象应该对其他对象保持最少的了解.又叫最少知道原则. 1.2 特 ...

  2. C#软件设计——小话设计模式原则之:接口隔离原则ISP

    前言:有朋友问我,设计模式原则这些东西在园子里都讨论烂了,一搜一大把的资料,还花这么大力气去整这个干嘛.博主不得不承认,园子里确实很多这方面的文章,并且不乏出色的博文.博主的想法是,既然要完善知识体系 ...

  3. 设计模式之六大原则——接口隔离原则(ISP)

    设计模式之六大原则——接口隔离原则(ISP)  转载于:http://www.cnblogs.com/muzongyan/archive/2010/08/04/1792528.html 接口隔离原则 ...

  4. [设计模式]<<设计模式之禅>>关于接口隔离原则

    在讲接口隔离原则之前,先明确一下我们的主角——接口.接口分为两种: ● 实例接口(Object Interface),在Java中声明一个类,然后用new关键字产生一个实例,它是对一个类型的事物的描述 ...

  5. 设计模式 第一天 UML图,设计模式原则:开闭原则、依赖倒转原则、接口隔离原则、合成复用原则、迪米特法则,简单工厂模式

    1 课程大纲 2 UML的概述 总结: UML unified model language 统一建模语言 一共有十种图: 类图 用例图 时序图 * 对象图 包图 组件图 部署图 协作图 状态图 (最 ...

  6. ZT 设计模式六大原则(4):接口隔离原则

    设计模式六大原则(4):接口隔离原则 分类: 设计模式 2012-02-27 08:32 17948人阅读 评论(21) 收藏 举报 设计模式classinterfacecstring框架 定义:客户 ...

  7. java设计模式学习笔记--接口隔离原则

    接口隔离原则简述 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应建立在最小的接口上 应用场景 如下UML图 类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类 ...

  8. 设计模式值六大原则——接口隔离原则 (ISP)

    接口隔离原则 Interface Segregation Principle    定义: 客户端不应该依赖它不需要的接口 类间的依赖关系应该建立在最小的接口上 我们可以把这两个定义概括为一句话:建立 ...

  9. 设计模式六大原则(4):接口隔离原则(Interface Segregation Principle)

    接口隔离原则: 使用多个专门的接口比使用单一的总接口要好. 一个类对另外一个类的依赖性应当是建立在最小的接口上的. 一个接口代表一个角色,不应当将不同的角色都交给一个接口.没有关系的接口合并在一起,形 ...

随机推荐

  1. 线性筛-mobius,强大O(n)

    首先,你要知道什么是莫比乌斯函数 然后,你要知道什么是积性函数 最后,你最好知道什么是线性筛 莫比乌斯反演 积性函数 线性筛,见上一篇 知道了,就可以愉快的写mobius函数了 由定义: μ(n)= ...

  2. Linux netstat命令详解(检验本机各端口的网络连接情况)

    netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP ...

  3. FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮

    一.Flutter FloatingActionButton 介绍 FloatingActionButton 简称 FAB,可以实现浮动按钮,也可以实现类似闲鱼 app 的地步凸起导航   child ...

  4. 作业1:使用go搭建一个web-server

    todo1:搭建web-server的原理 todo2:go实现web-server

  5. zabbix-server报错:No route to host

    前戏: 我在VM虚拟机中创建了2个liunx系统(rhel7和cent7),一个用作zabbix服务端,另一个用作zabbix客户端.但是用服务端监控客户端时图标是红色的监控不了,报错信息为:Get ...

  6. vue中,怎么给data对象添加新的属性?(尼玛这面试题居然让我给碰上了。。。。)

    Vue中给data中的对象属性添加一个新的属性时会发生什么,如何解决? 示例: <template> <div> <ul> <li v-for="v ...

  7. [经验] Java 使用 netty 框架, 向 Unity 客户端的 C# 实现通信[2]

    在前一篇文章中, 我们实现了从Java netty 服务端到 unity 客户端的通讯, 但是在过程中也发现有一些问题是博主苦苦无法解决的, 但是还好终于有些问题还是被我找刀方法解决了, 现在把这些解 ...

  8. MindManager安装、激活

    MindManager安装 MindManager激活

  9. js的split() 方法和join()方法

    定义和用法 split() 方法用于把一个字符串分割成字符串数组. String.split() 执行的操作与 Array.join 执行的操作是相反的. join() 方法用于把数组中的所有元素放入 ...

  10. 1.1、webrtc的历史和现状

    1.1.webrtc的历史和现状 本书目录 温馨提示:本书的内容,将按照顺序一一展开,上篇文章阐述本书的诞生的原因,推荐阅读方式等. 如果你还没有阅读上一篇文章(必读前言—— 作者的独白),我建议返回 ...