您的位置:首页 > 健康 > 美食 > 四川疫情最新政策_代理平台软件_广州seo推广服务_百度的代理商有哪些

四川疫情最新政策_代理平台软件_广州seo推广服务_百度的代理商有哪些

2024/12/25 12:55:03 来源:https://blog.csdn.net/qq_43206280/article/details/142517174  浏览:    关键词:四川疫情最新政策_代理平台软件_广州seo推广服务_百度的代理商有哪些
四川疫情最新政策_代理平台软件_广州seo推广服务_百度的代理商有哪些

云风网
云风笔记
云风知识库

一、设计模式接口隔离原则定义

客户端不应该被迫依赖于它不使用的方法,一个类对另一个类的依赖应该建立在最小的接口上。要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:

  1. 单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。
  2. 单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。

二 、原则作用

  1. 将臃肿庞大的接口分解为多个粒度小的接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。
  2. 接口隔离提高了系统的内聚性,减少了对外交互,降低了系统的耦合性。
  3. 如果接口的粒度大小定义合理,能够保证系统的稳定性;但是,如果定义过小,则会造成接口数量过多,使设计复杂化;如果定义太大,灵活性降低,无法提供定制服务,给整体项目带来无法预料的风险。
  4. 使用多个专门的接口还能够体现对象的层次,因为可以通过接口的继承,实现对总接口的定义。
  5. 能减少项目工程中的代码冗余。过大的大接口里面通常放置许多不用的方法,当实现这个接口的时候,被迫设计冗余的代码。

三、原则实现实例

在具体应用接口隔离原则时,应该根据以下几个规则来衡量。

  1. 接口尽量小,但是要有限度。一个接口只服务于一个子模块或业务逻辑。
  2. 为依赖接口的类定制服务。只提供调用者需要的方法,屏蔽不需要的方法。
  3. 了解环境,拒绝盲从。每个项目或产品都有选定的环境因素,环境不同,接口拆分的标准就不同深入了解业务逻辑。
  4. 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。
1、新建main.java空白文件,cursor输入指令

在这里插入图片描述
在这里插入图片描述

2、自动生成代码以及文件
2.1、Main.java代码如下:
public class Main {public static void main(String[] args) {System.out.println("Testing Basic Music Player:");MusicPlayer basicPlayer = new BasicMusicPlayer();testMusicPlayer(basicPlayer);System.out.println("\nTesting Smart Music Player:");SmartMusicPlayer smartPlayer = new SmartMusicPlayer();testAdvancedMusicPlayer(smartPlayer);testVolumeControl(smartPlayer);}private static void testMusicPlayer(MusicPlayer player) {player.play();player.stop();}private static void testAdvancedMusicPlayer(AdvancedMusicPlayer player) {player.play();player.pause();player.next();player.previous();player.stop();}private static void testVolumeControl(VolumeControl player) {player.setVolume(50);}
}
2.2、BasicMusicPlayer .java代码如下:

BasicMusicPlayer 只实现了 MusicPlayer 接口,因为它只支持基本的播放和停止功能。

public class BasicMusicPlayer implements MusicPlayer {@Overridepublic void play() {System.out.println("Basic Music Player: Playing music");}@Overridepublic void stop() {System.out.println("Basic Music Player: Stopping music");}
}
2.3、SmartMusicPlayer.java代码如下:

SmartMusicPlayer 实现了 AdvancedMusicPlayer 和 VolumeControl 接口,因为它支持更多的功能。

public class SmartMusicPlayer implements AdvancedMusicPlayer, VolumeControl {@Overridepublic void play() {System.out.println("Smart Music Player: Playing music");}@Overridepublic void stop() {System.out.println("Smart Music Player: Stopping music");}@Overridepublic void pause() {System.out.println("Smart Music Player: Pausing music");}@Overridepublic void next() {System.out.println("Smart Music Player: Playing next track");}@Overridepublic void previous() {System.out.println("Smart Music Player: Playing previous track");}@Overridepublic void setVolume(int volume) {System.out.println("Smart Music Player: Setting volume to " + volume);}
}
2.4、AdvancedMusicPlayer .java代码如下:
public interface AdvancedMusicPlayer extends MusicPlayer {void pause();void next();void previous();
}
2.5、VolumeControl.java代码如下:
public interface VolumeControl {void setVolume(int volume);
}
3、运行主程序输出

客户端代码(Main 类)可以根据需要使用不同的接口,而不需要依赖于它们不使用的方法。

在这里插入图片描述

这种设计允许我们根据设备的实际功能来实现相应的接口,而不是强制所有设备实现所有功能。这就是接口隔离原则的核心思想:客户端不应该被迫依赖于它们不使用的方法。

您可以直接运行这个 Main 类来查看输出结果,这将给您一个直观的了解接口隔离原则如何在实际开发中应用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com