接口隔离原则~

2023-09-22 09:20:54

接口隔离原则是面向对象设计原则中的一条原则,它的核心思想是将大接口拆分为多个小接口客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上,接口应该具有单一功能,不应该包含不相关或不需要的方法,以便提高系统的灵活性和可维护性。它同时也要求接口的设计应该稳定,一旦设计好后,就不应该频繁地进行修改。

实例:

假设我们定义图形的基本操作有绘制,移动,缩放,对于某些特殊的功能,并不是每个图形所必须的,那么根据接口隔离原则,我们不应该将其特殊的功能定义在包含图形基本操作的接口中,而是写在一个单独的接口中,以便需要该功能的类可以实现该接口

// Shape接口---定义图形的基本操作
 interface Shape {
    void draw();
    void move(int x, int y);
    void resize(int width, int height);
}
// Rotatable接口---“特殊功能"图形的旋转
  interface Rotatable {
    void rotate(double angle);
}
// 矩形类不需要实现新添加的旋转功能,不需要实现Rotatable接口
class Rectangle implements Shape {
    // 实现绘制、移动和缩放方法...
    @Override
    public void draw() {
        // 绘制矩形...
    }
    @Override
    public void move(int x, int y) {
        // 移动矩形...
        }
    @Override
    public void resize(int width, int height) {
        // 缩放矩形...
    }}
// 圆形类---需要实现新添加的旋转功能,需要实现Rotatable接口
public class Circle implements Shape, Rotatable {
    @Override
    public void draw() {  // 绘制圆形...
        }
    @Override
    public void move(int x, int y) {
        // 移动圆形...
    }
    @Override
    public void resize(int width, int height) {
        // 缩放圆形...
    }
    @Override
    public void rotate(double angle) {
        // 旋转圆形...
    }
}

更多推荐

【前段基础入门之】=>初识 HTML

文章目录前言HTML的详情简介HTML发展史HTML入门1.HTML标签元素2.HTML标签属性3.HTML的标准结构总结前言在整个前端开发中,必须掌握的技术栈为:HTML,CSS,JavaScript,它们三者,共同组成了前端开发的基础生态,以至于后续的进阶式开发,都是在这三者的基础上的扩展,同时它们三者在前端开发中

基于微信小程序的美食推荐系统设计与实现(源码+lw+部署文档+讲解等)

前言💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗👇🏻精彩专栏推荐订阅👇🏻2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选

20230919在WIN10下使用python3将PDF文档转为DOCX格式的WORD文档

20230919在WIN10下使用python3将PDF文档转为DOCX格式的WORD文档2023/9/1911:20pythonpdfwordhttps://blog.csdn.net/u013185349/article/details/130059657Python实现PDF转Word文档AcceptedLin已

上PICO,沉浸式观看亚运直播,参与跨国界游戏竞技

备受瞩目的杭州第19届亚运会,将于9月23日正式开幕。据悉,这也是有史以来项目最多的一届亚运会,除部分传统奥运项目外,还包含武术、藤球、板球、克柔术、柔术等亚洲特色项目,以及霹雳舞、电子竞技等深受年轻人喜爱的新兴项目。作为全球领先的VR品牌,PICO将对本届杭州亚运会进行全程赛事直播、回放。这也是继卡塔尔世界杯、成都大

SI3262:国产NFC+MCU+防水触摸按键三合一SoC芯片

目录SI3262简介特点结构框图芯片特性SI3262简介Si3262是高度集成ACD低功耗MCU+NFC+15通道防水触摸按键的SoC芯片。其MCU模块具有低功耗、LowPinCount、宽电压工作范围,集成了13/14/15/16位精度的ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC、

百度测开面试题分享

1、java常用的异常处理机制?Java常用的异常处理机制有以下几种:1)try-catch-finally语句:用于捕获和处理异常。将可能抛出异常的代码放在try块中,然后在catch块中处理异常。无论是否发生异常,finally块中的代码都会被执行。try{//可能抛出异常的代码}catch(ExceptionTy

Java面试题之——异常和错误

提示:解释Java中的异常和错误是什么,以及它们之间的区别是什么?文章目录前言从定义上来说:从处理方式来看:总结⭐️好书推荐前言提示:这里可以添加本文要记录的大概内容:在Java编程语言中,异常和错误都是程序运行时可能出现的问题,但它们之间存在一些重要的区别。提示:以下是本篇文章正文内容,下面案例可供参考从定义上来说:

Linux内核:解密操作系统的核心技术

大家好,我是运维家的作者,今天我要和大家聊一聊Linux内核。作为操作系统的核心技术,Linux内核扮演着至关重要的角色。它像是一个大总管,掌控着整个操作系统的各种资源和功能。什么是Linux内核?就像我们人类身体的大脑一样,Linux内核是Linux操作系统的核心组件。它运行在系统的最底层,负责管理和分配计算机的硬件

社交媒体商业禁令冲击:TikTok如何应对印尼政策变化?

随着社交媒体的普及和发展,各国政府开始越来越关注这一领域的监管和控制。印尼政府最近的决定,禁止在社交媒体上进行商品交易,引起了广泛的关注。这一政策变化对TikTok等社交媒体平台带来了巨大的挑战,要求它们重新审视商业模式并采取应对措施。政策背景近年来,印尼的进口条件不断收紧,免税门槛逐渐下调,甚至发布了新的进口规则,限

Python Q-learning 算法 --2023博客之星候选--城市赛道

Q-learning是一种强化学习算法,用于解决马尔可夫决策过程(MDP)问题。什么是马尔可夫决策过程(MDP)问题?马尔可夫决策过程(MDP)是一种用于建模序贯决策问题的数学框架。在MDP中,决策问题被建模为一个基于马尔可夫链的数学模型。MDP由以下要素组成:状态空间(StateSpace):一组可能的状态,用来描述

微服务如何改变软件开发:实战经验与最佳实践分享

文章目录什么是微服务?微服务实战经验1.定义明确的服务边界2.使用API网关3.自动化部署和持续集成4.监控和日志记录微服务最佳实践1.文档和通信2.弹性设计3.安全性4.版本控制5.监控和警报微服务的未来🎉欢迎来到架构设计专栏~微服务如何改变软件开发:实战经验与最佳实践分享☆*o(≧▽≦)o*☆嗨~我是IT·陈寒�

热文推荐