设计原则之接口隔离原则

简介: 设计原则之接口隔离原则

博主介绍: ✌博主从事应用安全和大数据领域,有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();
    }
}

1686494501743.jpg

💕💕 本文由激流丶创作,原创不易,感谢支持!
💕💕喜欢的话记得点赞收藏啊!

目录
相关文章
|
设计模式 关系型数据库 数据安全/隐私保护
软件架构设计原则之单一职责原则
单一职责(Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更的原因。假设我们有一个类负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能导致另一个职责的功能发生故障。这样一来,这个类就存在两个导致类变更的原因。如何解决这个问题呢?将两个职责用两个类来实现,进行解耦。后期需求变更维护互不影响。这样的设计,可以降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险。总体来说,就是一个类、接口或方法只负责一项职责。
115 0
软件架构设计原则之单一职责原则
|
设计模式 人工智能 Java
软件架构设计原则之依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖低层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并且能够降低修改程序所造成的风险。接下来看一个案例,还是以Course(课程)为例,先来创建一个类Tom:
96 0
|
设计模式 关系型数据库
软件架构设计原则之迪米特法则
迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合度。迪米特原则主要强调:只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称为成员朋友类,而出现在方法体内部的类不属于朋友类。
107 1
六大设计原则-接口隔离原则【Interface Segregation Principle】
六大设计原则-接口隔离原则【Interface Segregation Principle】
48 0
七大设计原则之接口隔离原则应用
七大设计原则之接口隔离原则应用
61 0
|
设计模式 关系型数据库
软件架构设计原则之接口隔离原则
接口隔离原则符合我们常说的高内聚、低耦合的设计思想,可以使类具有很好的可读性、可扩展性和可维护性。我们在设计接口的时候,要多花时间去思考,要考虑业务模型,包括对以后有可能发生变更的地方还要做一些预判。所以,对于抽象、对于业务模型的理解是非常重要的。下面我们来看一段代码,对一个动物行为进行抽象描述。
104 0
|
设计模式 关系型数据库
软件架构设计原则之里氏替换原则
里氏替换原则(Liskov Substitution Principle,LSP)是指如果对每一个类型为T1的对象o1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换成O2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。
79 0
|
设计模式 人工智能 前端开发
软件架构设计原则之开闭原则
开闭原则(Open-Closed Principle,OCP)是指一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。它强调的是用抽象构建框架,用实现扩展细节,可以提高软件系统的可复用性及可维护性。开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定、灵活的系统。例如版本更新,我们尽可能不修改源代码,但是可以增加新功能。
134 0
|
设计模式 安全 Java
设计原则之依赖倒置原则
设计原则之依赖倒置原则
81 0
设计原则之依赖倒置原则
|
设计模式 程序员 测试技术
设计模式 - 六大设计原则之SRP(单一职责)
单一职责原则(Single Responsibility Principle, SRP)又称单一功能原则,是面向对象的五个基本原则(SOLID)之一。 它规定一个类应该只有一个发生变化的原因。
265 0
设计模式 - 六大设计原则之SRP(单一职责)