范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

面向对象设计原则接口隔离原则

  接口隔离原则的定义
  接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。
  2002 年罗伯特·C.马丁给"接口隔离原则"的定义是:客户端不应该被迫依赖于它不使用的方法(Clients should not be forced to depend on methods they do not use)。该原则还有另外一个定义:一个类对另一个类的依赖应该建立在最小的接口上(The dependency of one class to another one should depend on the smallest possible interface)。
  以上两个定义的含义是:要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。
  接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的: 单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。 单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。 接口隔离原则的优点
  接口隔离原则是为了约束接口、降低类对接口的依赖性,遵循接口隔离原则有以下 5 个优点。 将臃肿庞大的接口分解为多个粒度小的接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。 接口隔离提高了系统的内聚性,减少了对外交互,降低了系统的耦合性。 如果接口的粒度大小定义合理,能够保证系统的稳定性;但是,如果定义过小,则会造成接口数量过多,使设计复杂化;如果定义太大,灵活性降低,无法提供定制服务,给整体项目带来无法预料的风险。 使用多个专门的接口还能够体现对象的层次,因为可以通过接口的继承,实现对总接口的定义。 能减少项目工程中的代码冗余。过大的大接口里面通常放置许多不用的方法,当实现这个接口的时候,被迫设计冗余的代码。 接口隔离原则的实现方法
  在具体应用接口隔离原则时,应该根据以下几个规则来衡量。 接口尽量小,但是要有限度。一个接口只服务于一个子模块或业务逻辑。 为依赖接口的类定制服务。只提供调用者需要的方法,屏蔽不需要的方法。 了解环境,拒绝盲从。每个项目或产品都有选定的环境因素,环境不同,接口拆分的标准就不同深入了解业务逻辑。 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。
  下面以学生成绩管理程序为例介绍接口隔离原则的应用。
  【例1】学生成绩管理程序。
  分析:学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 3 个模块中,其类图如图 1 所示。
  图1 学生成绩管理程序的类图
  程序代码如下: package principle;  public class ISPtest {     public static void main(String[] args) {         InputModule input = StuScoreList.getInputModule();         CountModule count = StuScoreList.getCountModule();         PrintModule print = StuScoreList.getPrintModule();         input.insert();         count.countTotalScore();         print.printStuInfo();         //print.delete();     } }  //输入模块接口 interface InputModule {     void insert();      void delete();      void modify(); }  //统计模块接口 interface CountModule {     void countTotalScore();      void countAverage(); }  //打印模块接口 interface PrintModule {     void printStuInfo();      void queryStuInfo(); }  //实现类 class StuScoreList implements InputModule, CountModule, PrintModule {     private StuScoreList() {     }      public static InputModule getInputModule() {         return (InputModule) new StuScoreList();     }      public static CountModule getCountModule() {         return (CountModule) new StuScoreList();     }      public static PrintModule getPrintModule() {         return (PrintModule) new StuScoreList();     }      public void insert() {         System.out.println("输入模块的insert()方法被调用!");     }      public void delete() {         System.out.println("输入模块的delete()方法被调用!");     }      public void modify() {         System.out.println("输入模块的modify()方法被调用!");     }      public void countTotalScore() {         System.out.println("统计模块的countTotalScore()方法被调用!");     }      public void countAverage() {         System.out.println("统计模块的countAverage()方法被调用!");     }      public void printStuInfo() {         System.out.println("打印模块的printStuInfo()方法被调用!");     }      public void queryStuInfo() {         System.out.println("打印模块的queryStuInfo()方法被调用!");     } }
  程序的运行结果如下: 输入模块的insert()方法被调用! 统计模块的countTotalScore()方法被调用! 打印模块的printStuInfo()方法被调用!

网约车平台因判定更换车辆接单封司机账号,司机希望立刻解除封禁极目新闻记者黄永进实习生白文福12月10日,出租车司机殷先生致电极目新闻热线(02786777777)反映称其账号被某网约车平台无故封禁一个月,致使他在此期间内无法正常接单,严重影电视机拥有摄像头是怎样一种体验?真香现场来了电视机拥有摄像头是怎样一种体验?今天我们就来解锁康佳电视的大屏通话AI拍照AI健身等多种新玩法。视频加载中1大屏通话首先电视机下载KK易聊,在我的应用中找到KK易聊,添加好联系人,新一代跳水王诞生,骁龙888256GB,屏下摄像头旗舰加速退场虽说不如前几年的号召力,但小米依然是用户最多的几个品牌之一,所以小米发布的旗舰产品,非常引人注目,特别是最近将要发布的小米12,虽说和之前摩托罗拉抢首发失败,但并不代表着小米12没新一代安卓旗舰芯片骁龙8Gen1VS天玑9000根据已曝光的安兔兔跑分数据,骁龙8Gen1总分1025215,CPU分数237710,GPU分数447926,MEM分数167082,UX分数172497。天玑9000总分1002首个国产元宇宙APP真的要来了,但百度为啥要奋勇争先?因为百度是真的慌啊!曾经的几大互联网巨头,就百度混的最惨。百度这几年贴吧和搜索引擎都逐渐式微了,那么百度没有在尝试新的业务吗?其实百度尝试了,但是都没有成功。首先是人工智能,记不记数字经济时代,面对新技术变革,企业信息化该如何应对?整体环境来看目前云计算大数据AI已经逐步走向人们的生活,小到个人的信息大到企业的核心数据的安全价值越来越被重视,而在数字经济2。0下,数据信息数据应用数据资产已成为企业竞争力的核心维权教授入选央视一周人物,白岩松愿个人事件能迅速变成有效的约束与监督长江日报大武汉客户端12月12日讯(记者李玉莹)维权教授赵德馨入选12月11日晚央视新闻频道新闻周刊一周人物。白岩松评价说武汉89岁的教授状告知名网站获赔70多万的新闻,引发了人们中国电子入主数字广东,央企主导粤港澳大湾区数字化进程近日消息,中国电子信息产业集团有限公司(中国电子)中电云数智科技有限公司(中国电子云)与广东省粤科金融集团有限公司(粤科金融)共同增资8亿元入股数字广东网络建设有限公司。据悉,中国手机多大内存才够用最近换下来的手机是2018年的,华为畅享8plus,新机不到2K,64G内存。那时候觉得64G就足够大了,装了很多APP,非常流畅。这款手机的好处在于,双卡的基础上还有一个内存卡槽Java设计模式之调停者模式一概述调停者模式。我们想象一下这样的场景一个系统内部通过许多的类互相之间相互调用来完成一系列的功能,这个系统内部的每个类都会存在至少一次的调用与被调用,多者数不胜数,这种情况下,一手机内存越来越大,到底该不该买大内存的手机?手机内存越来越大是一个主流趋势,为何要调整加大内存呢?主要是现在的应用程序功能越来完善,占用内存也越来越大,所以手机内存必要的跟着调整。那么购买手机选择多大内存合适,从正常的操作情
格瑞祈福捐赠仪式在常州宝林寺举行2020年9月9日,格瑞智慧人居环境科技(江苏)有限公司祈福捐赠仪式在常州宝林寺举行。上午8时18分,在庄严的大雄宝殿内,宝林寺方丈慧闻大和尚代表寺院接受格瑞智慧人居环境科技(江苏华商传媒低调深耕三四线二三里不是网红故事,而是战略升级在传统媒体转型进程中,业界似乎很少听到华商传媒的声音。作为唯一一家在全国运营都市报的传媒集团,低调务实似乎一直是华商传媒的风格,但是,在网红时代,这家传媒集团的声音似乎又太过沉寂。纪念诗人胡续冬他的一首诗,让我想起一个故事2021年8月22日下午,诗人北京大学外国语学院副教授胡续冬(1974年10月2021年8月)在北京去世,终年47岁。胡续冬,原名胡旭东,北京大学外国语学院世界文学研究所副教授北京小爱同学App在苹果应用商店下架原因未知7月22日,TechWeb查询发现,小爱同学App在苹果AppStore应用商店无法被搜索到,疑似被苹果下架。目前下架原因未知,小米方面尚未作出回应。TechWeb在苹果AppSt谐音梗social小能手冲浪少年哈啤的社交达人养成记要说今夏最火的刑侦局,非扫黑风暴莫属!超前点映都不足以压制网友被孙兴气死的怒火。只要集数更新,相关剧情常会成为网友热议焦点。无植入,不电视剧。如此火爆的影片,自然少不了广告合作商的高温杀菌的笑脸科技内裤洗护机体验高温杀菌的笑脸科技内裤洗护机体验前言人穿过的内裤都有看不见的细菌,手洗不仅麻烦,而且还会残留细菌,从而引发私处不适。为此,市面上出现了清洁杀菌的专业内裤洗护机,帮助人们更便捷更健康海豚售价9。38万元起欢迎莅临赏鉴纯电新物种海豚正式上市!综合补贴后售价9。38万元12。18万元!海豚是海洋车系的首款车型,也是首款采用海洋美学设计理念的车型,首款基于e平台3。0打造的车型。搭载DiLink3。宋PLUS新能源售14。68万元起欢迎试驾驭见皆引领!全球首款宽体超混SUV领航上市!宋PLUSDMi上市价14。68万起(综合补贴后)创新采用骁云插混专用1。5L高效发动机高效EHS电混系统,达到短途用电经济节省,长途用谈AMD3DVCache背后的存储层次问题其实如果你看过RomeMilan的IODCCD的功耗情况,就会感觉到多通道内存是一个比较让人纠结的东西。对于服务器GPU来说,单Package的功耗上限大概是280W。插单条内存,谈公版显卡散热从涡轮到多风扇方案的转变谈涡轮和多风扇散热,就必须要谈均热板热管,还有多显卡在一段历史中的作用。在以显卡危机为代表的显卡性能军备竞赛时代,SLICF技术提出之后,消费级显卡的性能开始像多插槽CPU那样进行高成本是老黄不用HBM显存的唯一原因?说成本高之前,先要搞清楚HBM是什么东西核心PCB互联硅片核心HBM显存首先内存通常都是并行总线,频率越高,位宽越宽,那么带宽越大。但是DRAM颗粒如果要做到高带宽,通常就意味着P