设计模式课程 设计模式精讲 3-7 接口隔离原则讲解及Coding
2024-09-05 14:05:44
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() { }
}
最新文章
- HashMap源码阅读笔记(基于jdk1.8)
- JS验证图片格式和大小并预览
- 你是否经常忘记网站上的各种密码?分享个密码管理软件LastPass
- Java的基本概念
- JavaWeb学习总结,文件上传和下载
- mybatis异常
- UITableViewCell的重用机制原理
- Java 异常类层次结构
- bin文件格式分析
- DOS批处理延时技术
- [TPYBoard - Micropython] 五分种学会用TPYBoard - GPS 制作短信群发机
- vue中的组件化
- HDU4521
- ICS Hack Tools
- MyEclipse中的几种查找方法
- ios. GCD 倒计时时间
- adb(android debug bridge)命令
- java基础思维导图大全
- php如何解决多线程同时读写一个文件的问题
- IDEA 中使用 Vue 提示 namespace is not bound