当前位置: 首页 > news >正文

设计原则之接口隔离原则

tip: 需要《设计模式之禅》的书籍,可以联系我

作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。

相关规则:

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 {@Overridepublic void sport() {System.out.printf("sport");}@Overridepublic void wash() {System.out.printf("wash");}@Overridepublic void eat() {System.out.printf("eat");}@Overridepublic 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();}
}
http://www.lryc.cn/news/90564.html

相关文章:

  • ubuntu20.04 ffmpeg mp4转AES加密的m3u8分片视频
  • Java08——继承
  • C++高级语法
  • React学习笔记九-高阶函数与函数柯里化
  • 2023年电工杯B题半成品论文使用讲解
  • 第1关:ODBC程序设计
  • Kotlin笔记(零)简介
  • android 12.0去掉usb授权提示框 默认给予权限
  • 工作积极主动分享,善于业务沟通
  • Opencv-C++笔记 (1) : opencv的数据结构
  • 什么是时间复杂度?
  • Spring框架中有哪些不同类型的事件
  • Codeforcs 1732C2 暴力
  • Python安全和防护:如何保护Python应用程序和用户数据的安全
  • [转载]Nginx 使用 X-Accel-Redirect 实现静态文件下载的统计、鉴权、防盗链、限速等
  • 继电器的详细分类
  • docker的底层原理,带你上天
  • HNU-电子测试平台与工具2-串口实验5次
  • Ext JS嵌套分组表格的实现
  • 【配电网重构】基于改进二进制粒子群算法的配电网重构研究(Matlab代码实现
  • Python编程语言简介
  • ChatGPT国内免费访问
  • 从零到无搭建Vue项目及代码风格规范
  • ASP.NET基于BS结构的实验室预约模型系统(源代码+论文)
  • Java货运物流园管理系统源码
  • Linux4.2LAMP
  • 车载ECU休眠唤醒-TJA1145
  • 平衡二叉树的插入,删除以及平衡调整。
  • 评价指标计算
  • Spring Boot如何实现OAuth2授权?