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