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

设计模式之设计原则

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

苹果iOS15。0。2你会更新吗?效果如何?苹果iOS15。02是10月12号推送的,之前的ios15。01是10月2号推送的。至于苹果iOS15正式版则是9月21号推送的。苹果iOS15。02版本,我今天(10月13号)早碳中和科华数据公司与国网综合能源服务集团有限公司签订战略合作协议,,围绕光伏逆变器储能变流器及系统集成新能源项目合作开发已建新能源电站处置综合能源服务业务数据中心智慧电能等领域开展合作。公司同时华为进军医疗器械,其腕部单导心电采集器获批生产来源读特10月11日,记者从广东省药品监督管理局获悉,华为终端有限公司的腕部单导心电采集器近日由广东省药品监督管理局正式批准生产,注册证号为粤械注准20202071705。据了解,物联网智能电表为电网发展带来哪些新可能?物联网智能电表为电网发展带来哪些新可能?国家电网预计2021年初步建成局域电力物联网,通过智能物联网,将原来的通过载波通讯技术的落后营抄方式逐步淘汰。这样通过物联网智能电表整合电力深度噬血者瓜分元宇宙文油醋郭海惟沈丹阳编辑玄宁Metaverse。嘴唇与牙齿摩擦几下,似咬非咬间轻快吐出四个音节Metaverse。读的时候最好下巴还要抬高,会更有味道。这是林杨在和我们聊起元宇宙时的这时候谁在买中概互联?有人跳船,有人上车。文实习生孙海宁龚方毅编辑龚方毅随着政策风险逐渐释放,中概股的恐慌性抛售似乎暂告段落,上周甚至迎来幅度不小的价格反弹。两支分别追踪美股和港股市场中国公司的指数纳斯网易投资慕华成志,后者为慕华教育发起成立的基础教育板块新京报贝壳财经讯企查查APP显示,10月12日,慕华成志教育科技有限公司发生工商变更,新增股东北京网易有道计算机系统有限公司。企查查信息显示,该公司成立于2014年,法定代表人为汪如果当初倪光南战胜了柳传志,那现在的联想怎样?会更好吗?应该不会,不在其位不谋其政,屁股决定脑袋。联想毕竟只是公司,活下去永远是第一位的,要想活下去也只能靠自己,国家帮帮忙可以,但对一个公司全身心投入根本不现实。倪总虽然贵为院士,但说到人工智能上市公司汇总人工智能上市公司科大讯飞(002030)总市值1254亿市盈率149。77专业从事人工智能技术研究软件及芯片产品开发知识服务,人工智能相关核心技术代表了世界最高水平。公司承建有首批当iPhone13恢复赠送充电头和耳机,网友呃,还是别送了吧自从iPhone取消送充电头和耳机,网友们对于苹果这一改变的热议就一直没个消停,三天两头拉出来调侃一番,好像缺了它们,收到的是块板砖。国内网友打嘴炮居多,明年可能线也没了过几年机子10千伏户内户外电缆头究竟怎么区分?10千伏户内户外电缆头究竟怎么区分?10KV的电缆头热缩电缆头和冷缩电缆头两种,究竟怎么区分看电缆头上的标签即可迅速发现户内户外电缆头的区别。一般最开头英语字母其实是中国汉语拼音的
7大知名的搜索引擎,按受欢迎程度排序通常,营销人员在争夺流量时会非常关注谷歌。例如,我敢打赌,你的SEO会议主要围绕Google的主题展开,诸如我们的自然搜索怎么样?之类的问题。我们如何在Google上捕获第一页?我今天主线已经清晰,新能源汽车板块大反弹即将开始今天大盘一扫往日的死气沉沉,大红灯笼高高挂,太阳又出来了。在这几天沉闷的调整中,各板块轮动迅速,找不到热点,找不到谁将引领主流,谁才是王者!从今天的市场来看,现在主线已经无比清楚,牵手宝华韦健音响,能给峰米科技带来什么?近日,光峰科技(688007。SH)旗下子公司,激光投影行业领导者峰米科技宣布与世界级音响品牌BowersWilkins(以下简称宝华韦健)达成重磅合作,震撼发布搭载了宝华韦健原装Linux之etcgroup文件用户组(Group)配置文件主要有etcgroup和etcgshadow,其中etcgshadow是etcgroup的加密信息文件。etcgroup文件作用etcgroup文件是用手慢无索尼5。1声道回音壁2490元,发烧也够用了搜罗全网俏数码尖儿货,分享抢购经验,手把手教你羊毛如何薅,尽在ZOL全新栏目手慢无。近日京东年货节,索尼HTS40R5。1声道回音壁仅需2490元到手!刚需可入!索尼HTS40R回Python的类和对象入门本文来说说Python中的类与对象,Python这门语言是无处不对象,如果你曾浅要了解过Python,你应该听过Python是一种面向对象编程的语言,所以你经常可能会看到面向对象编零基础如何学习互联网营销?互联网营销在百度百科上的定义如下互联网营销也称为网络营销,就是以国际互联网络为基础,利用数字化的信息和网络媒体的交互性来实现营销目标的一种新型的市场营销方式。营销的最终目的是占领市它们是我2021年用过最好的手机,可择机捡漏,不过价差很大又是一年该总结的时候了,睡前媳妇儿突然的一句今年你钱都花哪儿去了,不善言辞的我差点来了句,我现在是王者V10,还好床头柜上的几个手机盒给了圆场的答案。虽然各大手机品牌基本用了一圈,为什么徕卡相机那么贵,动不动就几万,跟普通单反有什么区别?一个一个来回答你1。产量低,每件产品分摊的费用就特别大。这是最根本的原因。2。经典款徕卡M系列的测距系统非常复杂,其中上图最左侧的微型屋脊棱镜非常难加工。上图是日本勃朗尼卡RF的结iPhone15或将全部搭载苹果自研芯片官方回应1工信部回复丁磊将制定国标促进充电接口融合统一作为全国政协委员,丁磊也曾向工信部荐言统一智能电子设备充电器标准端口,进一步减少电子垃圾助力碳中和。近日,工信部答复丁磊称,将小米被印追缴65亿卢布,这个瓜该怎么吃?近期的印向小米追缴65亿卢布的事儿不知道大家看了没。居士认为,小米大概率会跟他们谈,最终的价格还是可以商量的,毕竟不谈的话,以后印的市场有没有还两说。同时,居士还认为,OV两厂大概