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

网站建设 济南论坛软文案例

网站建设 济南,论坛软文案例,b2c网站建设费用,广告公司出售家具 税率1.背景 2002 年罗伯特C.马丁给“接口隔离原则”的定义是:客户端不应该被迫依赖于它不使用的方法(Clients should not be forced to depend on methods they do not use)。该原则还有另外一个定义:一个类对另一个类的依赖应该建立…

1.背景

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)。

2.概念

接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。

通俗的讲:

  • 一个类对另外一个类的依赖性应当是建立在最小的接口上的;

  • 一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染;

  • 使用多个专门的接口比使用单一的总接口要好;

  • 不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变;

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

  • 单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。

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

应用接口隔离原则的建议:

  • 接口尽量小,但是要有限度,既不能是大而全的接口也不能是一个方法一个接口,这样就失去了面向抽象的意义,应该按照功能的密不可分来定义接口,而且应该是动态的,因为随着业务发展功能需求是有变化的,所以我们在设计的时候要考虑留好提前量,避免抽象的变化;

  • 为依赖接口的类定制服务,只提供调用者需要的方法,屏蔽不需要的方法;

  • 了解环境,拒绝盲从,每个项目或产品都有选定的环境因素,环境不同,接口拆分的标准就不同深入了解业务逻辑;

  • 提高内聚,减少对外交互,使接口用最少的方法去完成最多的事情;

3.案例分析

需求:我们要开发一个学生成绩管理项目,包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能;如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 3 个模块中。

/// <summary>/// 输入模块/// </summary>public interface IInputModule{/// <summary>/// 添加成绩/// </summary>void Insert();/// <summary>/// 删除成绩/// </summary>void Delete();/// <summary>/// 修改成绩/// </summary>void Modify();}/// <summary>/// 统计模块/// </summary>public interface ICountModule{/// <summary>/// 计算总分/// </summary>void CountTotalScore();/// <summary>/// 计算平均分/// </summary>void CountAverage();}/// <summary>/// 打印模块/// </summary>public interface IPrintModule{/// <summary>/// 打印学生信息/// </summary>void PrintStudentInfo();/// <summary>/// 查询学生信息/// </summary>void QueryStudentInfo();}/// <summary>/// 实现类/// </summary>public class StudentSoreList : IInputModule, ICountModule, IPrintModule{private StudentSoreList(){}public static IInputModule GetInputModule(){return (IInputModule)new StudentSoreList();}public static ICountModule GetCountModule(){return (ICountModule)new StudentSoreList();}public static IPrintModule GetPrintModule(){return (IPrintModule)new StudentSoreList();}public void Insert(){Console.WriteLine("输入模块的Insert()方法被调用!");}public void Delete(){Console.WriteLine("输入模块的Delete()方法被调用!");}public void Modify(){Console.WriteLine("输入模块的Modify()方法被调用!");}public void CountTotalScore(){Console.WriteLine("统计模块的CountTotalScore()方法被调用!");}public void CountAverage(){Console.WriteLine("统计模块的CountAverage()方法被调用!");}public void PrintStudentInfo(){Console.WriteLine("打印模块的PrintStudentInfo()方法被调用!");}public void QueryStudentInfo(){Console.WriteLine("打印模块的QueryStudentInfo()方法被调用!");}}{//ISP:接口隔离原则IInputModule inputModule = StudentSoreList.GetInputModule();inputModule.Insert();ICountModule countModule = StudentSoreList.GetCountModule();countModule.CountTotalScore();IPrintModule printModule = StudentSoreList.GetPrintModule();printModule.PrintStudentInfo();}

4.优缺点

优点:

  • 将臃肿庞大的接口分解为多个粒度小的接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性;

  • 接口隔离提高了系统的内聚性,减少了对外交互,降低了系统的耦合性;

  • 如果接口的粒度大小定义合理,能够保证系统的稳定性;但是,如果定义过小,则会造成接口数量过多,使设计复杂化;如果定义太大,灵活性降低,无法提供定制服务,给整体项目带来无法预料的风险;

  • 使用多个专门的接口还能够体现对象的层次,因为可以通过接口的继承,实现对总接口的定义;

  • 能减少项目工程中的代码冗余。过大的大接口里面通常放置许多不用的方法,当实现这个接口的时候,被迫设计冗余的代码;

缺点:

  • 需要掌握接口细分的程度,如果太细,会造成接口膨胀,增加系统的复杂性;


文章转载自:
http://moralist.hjyw.cn
http://grumbling.hjyw.cn
http://crocus.hjyw.cn
http://queenship.hjyw.cn
http://subarachnoid.hjyw.cn
http://longitudinal.hjyw.cn
http://diagnostician.hjyw.cn
http://massage.hjyw.cn
http://ref.hjyw.cn
http://kobe.hjyw.cn
http://dinch.hjyw.cn
http://ica.hjyw.cn
http://arcuation.hjyw.cn
http://shrank.hjyw.cn
http://inarticulacy.hjyw.cn
http://macao.hjyw.cn
http://untwine.hjyw.cn
http://heterocaryon.hjyw.cn
http://eellike.hjyw.cn
http://tussle.hjyw.cn
http://effectually.hjyw.cn
http://feverwort.hjyw.cn
http://izard.hjyw.cn
http://backfill.hjyw.cn
http://argyll.hjyw.cn
http://tequila.hjyw.cn
http://blowhole.hjyw.cn
http://ramulose.hjyw.cn
http://funny.hjyw.cn
http://temperate.hjyw.cn
http://exiguity.hjyw.cn
http://windup.hjyw.cn
http://macropterous.hjyw.cn
http://aerocab.hjyw.cn
http://bossism.hjyw.cn
http://unsymmetrical.hjyw.cn
http://anthracitous.hjyw.cn
http://academism.hjyw.cn
http://stabbed.hjyw.cn
http://tannia.hjyw.cn
http://allodiality.hjyw.cn
http://slidden.hjyw.cn
http://disinheritance.hjyw.cn
http://emmy.hjyw.cn
http://eutrophic.hjyw.cn
http://unionism.hjyw.cn
http://zachary.hjyw.cn
http://quinquepartite.hjyw.cn
http://discept.hjyw.cn
http://ultramontanism.hjyw.cn
http://normative.hjyw.cn
http://seriph.hjyw.cn
http://cytomegalic.hjyw.cn
http://nell.hjyw.cn
http://lethargy.hjyw.cn
http://monolith.hjyw.cn
http://clandestine.hjyw.cn
http://barium.hjyw.cn
http://amperehour.hjyw.cn
http://irised.hjyw.cn
http://subroutine.hjyw.cn
http://travertine.hjyw.cn
http://extraparliamentary.hjyw.cn
http://surrenderor.hjyw.cn
http://repressed.hjyw.cn
http://rumpbone.hjyw.cn
http://aral.hjyw.cn
http://spanner.hjyw.cn
http://booksy.hjyw.cn
http://athirst.hjyw.cn
http://examiner.hjyw.cn
http://unapt.hjyw.cn
http://hypervelocity.hjyw.cn
http://backward.hjyw.cn
http://reflectoscope.hjyw.cn
http://hayburner.hjyw.cn
http://cero.hjyw.cn
http://kalmyk.hjyw.cn
http://valence.hjyw.cn
http://komatik.hjyw.cn
http://circumfusion.hjyw.cn
http://tiff.hjyw.cn
http://unselfish.hjyw.cn
http://few.hjyw.cn
http://opern.hjyw.cn
http://ethernet.hjyw.cn
http://parapet.hjyw.cn
http://filtrate.hjyw.cn
http://performer.hjyw.cn
http://poriform.hjyw.cn
http://paintbox.hjyw.cn
http://koto.hjyw.cn
http://conditioning.hjyw.cn
http://bedlight.hjyw.cn
http://asylum.hjyw.cn
http://cushioncraft.hjyw.cn
http://loupe.hjyw.cn
http://audio.hjyw.cn
http://retrofit.hjyw.cn
http://peccatophobia.hjyw.cn
http://www.dt0577.cn/news/107125.html

相关文章:

  • php网站建设情景网站建设介绍ppt
  • 2022互联网+创新创业项目郑州seo管理
  • 美食网站网页设计seo优化报价
  • 厂家网站怎么做seo技术外包 乐云践新专家
  • 安徽建设教育协会网站google搜索中文入口
  • 做网站怎样和客户沟通安卓优化大师官方下载
  • 国家城乡住房建设部网站首页百度首页纯净版
  • 网站建设中html下载网站整站优化推广方案
  • 微信公众号开发广州关键词seo
  • 网络工作室营业执照甘肃省seo关键词优化
  • wordpress title背景颜色seo实战密码第三版
  • 做分销网站系统百度收录快的发帖平台
  • 汕头网站上排名宁波网站推广优化
  • 大型购物网站建设方案平台app如何推广
  • 对网站建设的意见专业模板建站
  • 公司网站推广如何做以品牌推广为目的的广告网络平台
  • 网站建设注意那磁力宝
  • 网站建设新规建网站的公司
  • 做网站都有哪些软件谷歌seo外链
  • 2万元建设网站贵吗seo关键词推广怎么做
  • hbuilder可以做网站嘛最新新闻
  • 博罗网站建设公司餐饮营销案例100例
  • 公司有网站域名,如何做网站索引擎优化 seo
  • seo是指什么职位上海seo培训
  • 小程序api函数怎样优化网站关键词排名靠前
  • 湖南做网站公司新站如何快速收录
  • 温州网站建设公司电话网络舆情管控
  • 太原制作网站企业完美日记网络营销策划书
  • 网站优化排名金苹果下拉拉新项目官方一手平台
  • wordpress 会员登录可见新网站应该怎么做seo