设计原则之接口隔离原则
tip: 需要《设计模式之禅》的书籍,可以联系我
作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。
相关规则:
推荐:体系化学习Java(Java面试专题)
1.6大设计规则-迪米特法则
2.6大设计原则-里氏替换原则
3.6大设计规则-开闭原则
4.6大设计规则-单一职责原则
5.6大设计规则-依赖倒置原则
文章目录
- 接口隔离原则
接口隔离原则
接口隔离原则,在《设计模式之禅》的第四章中介绍,但是文章开头并没有直接介绍这个原则的定义,可能因为不好描述吧。而是总结了这个原则的一些特性:
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();
}
}
还没有评论,来说两句吧...