游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

设计模式之设计原则

  SOLID原则是由五个设计原则组成:单一职责原则(SRP),开闭原则(OCP),里式替换原则(LSP),接口隔离原则(ISP),依赖反转原则(DIP)
  单一职责原则(SRP)概念
  单一职责原则的英文是SingleResponsibilityPrinciple,缩写为SRP。
  一个类只负责完成一个职责或者功能。不要设计大而全的类,要设计粒度小、功能单一的类。单一职责原则是为了实现代码高内聚、低耦合,提高代码的复用性、可读性、可维护性。如何判断类的职责是否足够单一?
  不同的应用场景、不同阶段的需求背景、不同的业务层面,对同一个类的职责是否单一,可能会有不同的判定结果。
  一些侧面的判断指标更具有指导意义和可执行性,比如,出现下面这些情况就有可能说明这类的设计不满足单一职责原则:类中的代码行数、函数或者属性过多;类依赖的其他类过多,或者依赖类的其他类过多;私有方法过多;比较难给类起一个合适的名字;类中大量的方法都是集中操作类中的某几个属性。类的职责是否设计得越单一越好?
  单一职责原则是为了实现代码高内聚、低耦合,如果拆分得过细,实际上会适得其反,反倒会降低内聚性,也会影响代码的可维护性。开闭原则(OCP)概念
  开闭原则的英文全称是OpenClosedPrinciple,简写为OCP。
  软件实体(模块、类、方法等)应该对扩展开放、对修改关闭。
  添加一个新的功能,应该是通过在已有代码基础上扩展代码(新增模块、类、方法、属性等),而非修改已有代码(修改模块、类、方法、属性等)的方式来完成。关于定义,我们有两点要注意。第一点是,开闭原则并不是说完全杜绝修改,而是以最小的修改代码的代价来完成新功能的开发。第二点是,同样的代码改动,在粗代码粒度下,可能被认定为修改;在细代码粒度下,可能又被认定为扩展。如何做到对扩展开放、修改关闭?
  我们要时刻具备扩展意识、抽象意识、封装意识,在写代码的时候,多思考这段代码未来可能有哪些需求变更,如何设计代码结构,事先留好扩展点,以便将新的代码灵活地插入到扩展点上。
  23种经典设计模式,大部分都是为了解决代码的扩展性问题而总结出来的,都是以开闭原则为指导原则的。最常用来提高代码扩展性的方法有:多态、依赖注入、基于接口而非实现编程,以及大部分的设计模式(比如,装饰、策略、模板、职责链、状态)。里式替换原则(LSP)概念
  里式替换原则的英文翻译是:LiskovSubstitutionPrinciple,缩写为LSP。
  子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。
  里式替换原则是用来指导,继承关系中子类该如何设计的一个原则。理解里式替换原则,最核心的就是理解designbycontract,按照协议来设计这几个字。父类定义了函数的约定(或者叫协议),那子类可以改变函数的内部实现逻辑,但不能改变函数原有的约定。这里的约定包括:函数声明要实现的功能;对输入、输出、异常的约定;甚至包括注释中所罗列的任何特殊说明。里式替换原则跟多态的区别
  虽然从定义描述和代码实现上来看,多态和里式替换有点类似,但它们关注的角度是不一样的。多态是面向对象编程的一大特性,也是面向对象编程语言的一种语法。它是一种代码实现的思路。而里式替换是一种设计原则,用来指导继承关系中子类该如何设计,子类的设计要保证在替换父类的时候,不改变原有程序的逻辑及不破坏原有程序的正确性。接口隔离原则(ISP)概念
  接口隔离原则的英文翻译是InterfaceSegregationPrinciple,缩写为ISP。
  客户端不应该强迫依赖它不需要的接口。其中的客户端,可以理解为接口的调用者或者使用者。
  接口的设计要尽量单一,不要让接口的实现类和调用者,依赖不需要的接口函数。接口隔离原则与单一职责原则的区别
  单一职责原则针对的是模块、类、接口的设计。接口隔离原则相对于单一职责原则,一方面更侧重于接口的设计,另一方面它的思考角度也是不同的。接口隔离原则提供了一种判断接口的职责是否单一的标准:通过调用者如何使用接口来间接地判定。如果调用者只使用部分接口或接口的部分功能,那接口的设计就不够职责单一。依赖反转原则(DIP)概念
  依赖反转原则。依赖反转原则的英文翻译是DependencyInversionPrinciple,缩写为DIP。
  高层模块不要依赖低层模块。高层模块和低层模块应该通过抽象来互相依赖。除此之外,抽象不要依赖具体实现细节,具体实现细节依赖抽象。
  所谓高层模块和低层模块的划分,简单来说就是,在调用链上,调用者属于高层,被调用者属于低层。控制反转(IOC)
  这里的控制指的是对程序执行流程的控制,而反转指的是在没有使用框架之前,程序员自己控制整个程序的执行。在使用框架之后,整个程序的执行流程可以通过框架来控制。流程的控制权从程序员反转到了框架。
  实现控制反转的方法有很多,控制反转并不是一种具体的实现技巧,而是一个比较笼统的设计思想,一般用来指导框架层面的设计。依赖注入(DI)
  什么是依赖注入呢?我们用一句话来概括就是:不通过new()的方式在类内部创建依赖类对象,而是将依赖的类对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类使用。KISS原则概念
  KISS原则。英文是KeepItSimpleandStupid,缩写为KISS。
  尽量保持简单
  KISS原则中的简单并不是以代码行数来考量的。代码行数越少并不代表代码越简单,我们还要考虑逻辑复杂度、实现难度、代码的可读性等。而且,本身就复杂的问题,用复杂的方法解决,并不违背KISS原则。除此之外,同样的代码,在某个业务场景下满足KISS原则,换一个应用场景可能就不满足了。对于如何写出满足KISS原则的代码不要使用同事可能不懂的技术来实现代码;不要重复造轮子,要善于使用已经有的工具类库;不要过度优化。DRY原则概念
  DRY原则为Don’tRepeatYourself
  不要重复造轮子
  实现逻辑重复,但功能语义不重复的代码,并不违反DRY原则。实现逻辑不重复,但功能语义重复的代码,也算是违反DRY原则。除此之外,代码执行重复也算是违反DRY原则。提高代码可复用性的一些方法减少代码耦合满足单一职责原则模块化业务与非业务逻辑分离通用代码下沉继承、多态、抽象、封装应用模板等设计模式
  我们在第一次写代码的时候,如果当下没有复用的需求,而未来的复用需求也不是特别明确,并且开发可复用代码的成本比较高,那我们就不需要考虑代码的复用性。在之后开发新的功能的时候,发现可以复用之前写的这段代码,那我们就重构这段代码,让其变得更加可复用。
  相比于代码的可复用性,DRY原则适用性更强一些。我们可以不写可复用的代码,但一定不能写重复的代码。迪米特法则(LOD)概念
  迪米特法则的英文翻译是:LawofDemeter,缩写是LOD。它还有另外一个更加达意的英文翻译为:TheLeastKnowledgePrinciple。
  最小知识原则
  每个模块只应该了解那些与它关系密切的模块的有限知识。
  不该有直接依赖关系的类之间,不要有依赖。有依赖关系的类之间,尽量只依赖必要的接口。迪米特法则是希望减少类之间的耦合,让类越独立越好。每个类都应该少了解系统的其他部分。一旦发生变化,需要了解这一变化的类就会比较少。如何理解高内聚、松耦合?
  所谓高内聚,就是指相近的功能应该放到同一个类中,不相近的功能不要放到同一类中。相近的功能往往会被同时修改,放到同一个类中,修改会比较集中。
  所谓松耦合指的是,在代码中,类与类之间的依赖关系简单清晰。即使两个类有依赖关系,一个类的代码改动也不会或者很少导致依赖类的代码改动。

我的老师优秀备课教案我的老师教学目标1。从文章内容的感悟分析中,了解刘老师的人物特点和内心世界,学会与文本对话。2。感受作者的感受,了解作者心目中的刘老师,学会与作者对话。……三年级语文冰灯教学设计学情分析随着当地经济的发展和学生家庭生活水平的提高,学生需要的东西几乎所有的家长很轻易地买到,所以学生对课文描述的故事感觉会比较遥远,对父亲的爱体会也比较肤浅。因此,课堂……初出茅庐相信世界充满爱饱经风霜后才知道家是爱与被爱的港湾人是在一次次的碰壁和打击下才变得坚强,为了保护自己也逐渐有了外壳。在网络还不发达的年代,一个人的品质和性格的形成更多来自于父母和老师的言传身教。学校是知识的海洋,同……2022年趋势预测视频监控技术将如何改变行业?市场调研表明,2022年的技术趋势将在很大程度上取决于智能视频监控、智能分析和云存储的进步。人们也越来越意识到需要视频监控系统,这导致对摄像机的使用制定了更多标准。然而也存在更……windows7旗舰版电脑开机密码怎么设置的方法尽管有很多深度系统的用户都已经升级win10了,但是使用windows7旗舰版的小伙伴还是很多的。相信很多深度技术的小伙伴都知道开机密码可以保护我们电脑里的隐私,不被他人看到。……画地为牢的近义词【中文】:画地为牢【读音】:hudwilo【正音】:牢;不能读成no。【辨形】:地;不能写成的。【画地为牢的意思】:牢:牢狱。在地上画了圈当做牢狱。比喻……让猫头鹰好好睡觉教学反思《让猫头鹰好好睡觉》是一片融知识性和趣味性于一体的童话故事。主要介绍了猫头鹰的生活习性,告诉孩子们猫头鹰是捕捉天数的能手,是人类的朋友。全文共分六个自然段,以小黄莺与老黄莺对话……为什么国内的大厂不愿意适配linux软件,技术实现上很难吗,1首先,服务器大部分都是Linux系统,工业机器用win的应该不如Linux的多,(马斯克的火箭用的Linux控制面板,各大机房服务器多是Linux,还有很多嵌入式Linux,……这些功能得到外媒一致好评,FindX3不愧是顶级旗舰最近网上关于OPPOFindX3系列的关注有点高,不仅是在国内有着不错的反响,甚至在国外也收获了很不错的声音。近日,就有国外数码媒体在油管上对OPPOFindX3系列做出了点评……消化的近义词及其意思与辨析消化的近义词、拼音、意思、辨析如下:消化xiohu消食xiosh【消化】食物在消化器官内,经过研磨和消化液的作用,分解为结构比较简单、容易被吸收的营养物质的过程。如……课文两件宝的优秀教学设计范文教学目标:1。知识目标:学习本课生字:正确认读生字12个;认识笔画竖提;初读课文,了解课文内容。2。能力目标:能够运用掌握的识字方法,学习生字;培养学生的合作精神,……条形统计图的说课稿一、教材分析1、说课内容:九年义务教育小学六年级数学第十二册P55P56条形统计图。2、学材分析:在第八册教材中,已经教学过一些简单的统计知识,学生已经知道一……
iPhone9即将上线,价格不足三千恭喜了苹果作为手机行业的巨头霸主,一直都是高品质的代名词,无论是配置还是性能,都高出安卓手机一大截。机友们对苹果手机出色的性能赞不绝口,但同时也因为iPhone高昂的价格而伤透了脑筋……约克中央空调更换冷冻的方法约克中央空调和其它空调一样,需要定时定期维护保养,并更换冷冻油以保持压缩机及系统的润滑能力,约3000到5000小时可更换一次,具体要根据实际的运行情况,油色的变化及磨损情况。……两巨头预以每辆低于30,000美元的价格生产数百万辆电动汽车在周二的电话会议中,有一次记者询问负担得起这个词的定义。该问题是向通用汽车(GM)电动、自动驾驶和燃料电池项目执行副总裁KenMorris和美国本田(HMC)公司运营执行副总裁……豪华中型轿车,捷尼赛思G70,惊艳来袭2021年4月捷尼赛思正式进入中国市场,其宗旨为通过引进动感优雅与尖端科技的车型,将品牌特有的豪华理念融入中国消费者的生活。作为韩系中型豪华轿车在中国市场发布的第三款车型捷尼赛……印度项目耗资36亿,上线就崩溃,宕机3个月!还是12306厉来源:麦叔编程作者:麦叔价值36。8亿的IT项目Infosys是印度的一家软件服务商,世界知名,在印度数一数二。在软件外包和技术服务上,国内可能没有一家公司可以和它……学生党,预算只有300元,能否推荐一款比较好的性价比高一点的推荐你看一下魔浪家的,价格很亲民,而且总体使用感受很不错。漫步者Lollipods,活动价会到218元左右。推荐它是因为它性价比真的很高,毕竟是一家专门做音响设备的……如何更加有效的自学?自学绝非易事。没有外部约束,没有DDL,即使没学成,也不会造成什么后果。但在这个日新月异的社会,在这个竞争激烈的环境中,不会自学,很难杀出重围。本文作者NatasshaSelv……OPPOEncoFree2官宣降噪深度达42dB,价格将突破5月20日,OPPOEncoFree2迎来了正式官宣,此前的最大悬念也得到了揭晓,这款新品耳机的降噪深度达到了42dB!目前的热门真无线降噪耳机中,vivoTWS2和小米Fli……5G套餐助运营商闷声发大财近日,三大运营商公布了2021年的业绩报告。从主要指标数据来看,三大运营商的业绩数据全部飙红,如此同步的亮眼成绩,可以说已多年未见,而就在两年前,关于5G投资是否会压垮运营商的……无棣县2021年度跨境电商圆满收官大众网海报新闻记者李存丁林浩通讯员付芳萍滨州报道近年来,跨境电商规模飞速增长,促进了外贸转型升级。特别是在新冠肺炎疫情全球大流行背景下,跨境电商消费的需求大大激增,跨境电……10年老果粉,2次换货iPhone12后果断放弃,国产手机真作为一个10年老果粉,这次对苹果真的失望了!但有一说一,国产手机真的香!笔者从iPhone3时代就开始使用苹果手机,iPhone3、iPhone4、iPhone5、iPh……4k显示器多少寸比较好?4K显示器多少寸比较好?答:4K显示器的尺寸常见的有15。6英寸、27英寸(28英寸)、31。5英寸(34英寸)、43英寸、50英寸、55英寸、65英寸等。至于选择……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网