设计模式课程 设计模式精讲 3-7 接口隔离原则讲解及Coding
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的更多相关文章
- 设计模式课程 设计模式精讲 3-8 迪米法特原则讲解及Coding
1 课程讲解 1.1 定义 1.2 特质 1.3 重点 2 代码演练 2.1 反例 2.2 正例 1 课程讲解 1.1 定义 定义:一个对象应该对其他对象保持最少的了解.又叫最少知道原则. 1.2 特 ...
- C#软件设计——小话设计模式原则之:接口隔离原则ISP
前言:有朋友问我,设计模式原则这些东西在园子里都讨论烂了,一搜一大把的资料,还花这么大力气去整这个干嘛.博主不得不承认,园子里确实很多这方面的文章,并且不乏出色的博文.博主的想法是,既然要完善知识体系 ...
- 设计模式之六大原则——接口隔离原则(ISP)
设计模式之六大原则——接口隔离原则(ISP) 转载于:http://www.cnblogs.com/muzongyan/archive/2010/08/04/1792528.html 接口隔离原则 ...
- [设计模式]<<设计模式之禅>>关于接口隔离原则
在讲接口隔离原则之前,先明确一下我们的主角——接口.接口分为两种: ● 实例接口(Object Interface),在Java中声明一个类,然后用new关键字产生一个实例,它是对一个类型的事物的描述 ...
- 设计模式 第一天 UML图,设计模式原则:开闭原则、依赖倒转原则、接口隔离原则、合成复用原则、迪米特法则,简单工厂模式
1 课程大纲 2 UML的概述 总结: UML unified model language 统一建模语言 一共有十种图: 类图 用例图 时序图 * 对象图 包图 组件图 部署图 协作图 状态图 (最 ...
- ZT 设计模式六大原则(4):接口隔离原则
设计模式六大原则(4):接口隔离原则 分类: 设计模式 2012-02-27 08:32 17948人阅读 评论(21) 收藏 举报 设计模式classinterfacecstring框架 定义:客户 ...
- java设计模式学习笔记--接口隔离原则
接口隔离原则简述 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应建立在最小的接口上 应用场景 如下UML图 类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类 ...
- 设计模式值六大原则——接口隔离原则 (ISP)
接口隔离原则 Interface Segregation Principle 定义: 客户端不应该依赖它不需要的接口 类间的依赖关系应该建立在最小的接口上 我们可以把这两个定义概括为一句话:建立 ...
- 设计模式六大原则(4):接口隔离原则(Interface Segregation Principle)
接口隔离原则: 使用多个专门的接口比使用单一的总接口要好. 一个类对另外一个类的依赖性应当是建立在最小的接口上的. 一个接口代表一个角色,不应当将不同的角色都交给一个接口.没有关系的接口合并在一起,形 ...
随机推荐
- JVM的方法区和永久带是什么关系?
什么是方法区? 方法区(Method Area)是jvm规范里面的运行时数据区的一个组成部分,jvm规范中的运行时数据区还包含了:pc寄存器.虚拟机栈.堆.方法区.运行时常量池.本地方法栈. 方法区存 ...
- 概率 lightoj 1027
题意 : 在n个门前选择一扇门出去, 然后如果第i扇门的 Xi值是正的话,你会花费Xi时间后出去 , 如果Xi是负数的话你会花费-Xi时间后回到老地方,并且忘记了刚才的选择, 选择一扇门的概率是等概的 ...
- 关于java中MD5加密(可直接使用)
本文转自:http://www.cnblogs.com/solove/archive/2011/10/18/2216715.html 上部分是转载的关于字符串的加密,后半部分则比较全,包括字符串.文件 ...
- MySQL命令行脚本
1. 命令行连接 打开终端,运行命令 mysql -uroot -p 回车后输入密码,当前设置的密码为mysql 退出登录 quit 和 exit 或 ctrl+d 查看版本:select versi ...
- kafka集群搭建记录
本文记录搭建kafka搭建过程. 一.硬件机器介绍 192.168.183.195 master-node 192.168.183.194 data-node1 192.168.183.196 dat ...
- 【REST详述及RESTful规范】
目录 Web服务交互 理解REST 什么是资源? 什么是URI.URL? 统一资源接口 资源的表述 状态转移 小结 "RESTful是一种软件的架构风格.设计风格,为客户端和服务端的交互提供 ...
- 私域流量&公域流量
所谓私域流量,指的是个人拥有完全的支配权的账号所沉淀的粉丝.客户.流量,可以直接触达的,多次利用的流量.比如说QQ号.微信号.社群上的粉丝或者顾客,就属于是私域流量. 而与之相对的,就是所谓的公域流量 ...
- ARM64架构下面安装mysql5.7.22
MySQL下载地址为: https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.t ...
- Nginx开始(自己使用,简单开始)
Nginx 1.网址 2.安装 如果需要资料的话可以直接来下载进行下载 前提 sudo yum install yum-utils 云主机重启之后需要执行 nginx -c /etc/nginx/ng ...
- php常用函数归纳
php常用函数归纳: /** * 截取指定长度的字符 * @param type $string 内容 * @param type $start 开始 * @param type $length 长度 ...