博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌
Java知识图谱点击链接:体系化学习Java(Java面试专题)
💕💕 感兴趣的同学可以收藏关注下 ,不然下次找不到哟💕💕
接口隔离原则
接口隔离原则,在《设计模式之禅》的第四章中介绍,但是文章开头并没有直接介绍这个原则的定义,可能因为不好描述吧。而是总结了这个原则的一些特性:
1、保证接口的纯洁性,接口要尽量小
2、接口的设计要高内聚,但是功能职责要单一
这两点怎么理解呢,我们举个例子:
我早上起床,第一件事是先运动,第二件事是洗漱,第三件是吃饭,第四件事是开车上班。那么这个四件事如果放在一个类里面呢,那么就不满于单一职责的原则了,而且接口力度不够细。
那么怎么利用接口隔离原则优化呢?如下例子。
我们通过行程类 Schedule 将事件全部串起来,每个事件都是从特定的接口实现来的,每件事他都发生在它应该发生的地方,这样写才符合接口隔离且单一职责的原则。
Schedule schedule = new Schedule();
schedule.sport();
schedule.wash();
schedule.eat();
schedule.drive();
package com.pany.camp.design.principle.quarantine;
/**
*
* @description: 客厅
* @copyright: @Copyright (c) 2022
* @company: Aiocloud
* @author: pany
* @version: 1.0.0
* @createTime: 2023-05-31 21:33
*/
public interface LivingRoom {
/**
* 在客厅运动
*
* @since 1.0.0
* @param
* @return: void
* @author: pany
* @version: 1.0.0
* @createTime: 2023-05-31 21:33
*/
void sport();
}
package com.pany.camp.design.principle.quarantine;
/**
*
* @description: 厕所
* @copyright: @Copyright (c) 2022
* @company: Aiocloud
* @author: pany
* @version: 1.0.0
* @createTime: 2023-05-31 21:34
*/
public interface Toilet {
/**
* 在厕所洗漱
*
* @since 1.0.0
* @param
* @return: void
* @author: pany
* @version: 1.0.0
* @createTime: 2023-05-31 21:34
*/
void wash();
}
package com.pany.camp.design.principle.quarantine;
/**
*
* @description: 餐桌
* @copyright: @Copyright (c) 2022
* @company: Aiocloud
* @author: pany
* @version: 1.0.0
* @createTime: 2023-05-31 21:35
*/
public interface DiningTable {
/**
* 餐桌上吃饭
*
* @since 1.0.0
* @param
* @return: void
* @author: pany
* @version: 1.0.0
* @createTime: 2023-05-31 21:35
*/
void eat();
}
package com.pany.camp.design.principle.quarantine;
/**
*
* @description: 车
* @copyright: @Copyright (c) 2022
* @company: Aiocloud
* @author: pany
* @version: 1.0.0
* @createTime: 2023-05-31 21:35
*/
public interface Car {
/**
* 开车上班
*
* @since 1.0.0
* @param
* @return: void
* @author: pany
* @version: 1.0.0
* @createTime: 2023-05-31 21:36
*/
void drive();
}
package com.pany.camp.design.principle.quarantine;
/**
*
* @description: 行程安排
* @copyright: @Copyright (c) 2022
* @company: Aiocloud
* @author: pany
* @version: 1.0.0
* @createTime: 2023-05-31 21:37
*/
public class Schedule implements LivingRoom, Toilet, DiningTable, Car {
@Override
public void sport() {
System.out.printf("sport");
}
@Override
public void wash() {
System.out.printf("wash");
}
@Override
public void eat() {
System.out.printf("eat");
}
@Override
public void drive() {
System.out.println("drive");
}
}
package com.pany.camp.design.principle.quarantine;
public class User {
public static void main(String[] args) {
Schedule schedule = new Schedule();
schedule.sport();
schedule.wash();
schedule.eat();
schedule.drive();
}
}
💕💕 本文由激流丶创作,原创不易,感谢支持!
💕💕喜欢的话记得点赞收藏啊!