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() { }
}

最新文章

  1. HashMap源码阅读笔记(基于jdk1.8)
  2. JS验证图片格式和大小并预览
  3. 你是否经常忘记网站上的各种密码?分享个密码管理软件LastPass
  4. Java的基本概念
  5. JavaWeb学习总结,文件上传和下载
  6. mybatis异常
  7. UITableViewCell的重用机制原理
  8. Java 异常类层次结构
  9. bin文件格式分析
  10. DOS批处理延时技术
  11. [TPYBoard - Micropython] 五分种学会用TPYBoard - GPS 制作短信群发机
  12. vue中的组件化
  13. HDU4521
  14. ICS Hack Tools
  15. MyEclipse中的几种查找方法
  16. ios. GCD 倒计时时间
  17. adb(android debug bridge)命令
  18. java基础思维导图大全
  19. php如何解决多线程同时读写一个文件的问题
  20. IDEA 中使用 Vue 提示 namespace is not bound

热门文章

  1. PostGreSql - 提取jsonb数据
  2. hibernate和mybatis出现配置文件xml的文件报错Multiple annotations found at this line(转)
  3. Python socket day5
  4. php 发送手机验证码
  5. js 根据data-i 降序排列
  6. 对象的上转型和下转型 (instanceof关键字)
  7. php用户名正则验证
  8. c# Linq List<T>去除其中重复的项
  9. @media screen 自适应笔记
  10. python基础(三)---Python基础语法