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

设计模式之设计原则

  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。
  「最小知识原则」
  每个模块只应该了解那些与它关系密切的模块的有限知识。
  不该有直接依赖关系的类之间,不要有依赖。有依赖关系的类之间,尽量只依赖必要的接口。迪米特法则是希望减少类之间的耦合,让类越独立越好。每个类都应该少了解系统的其他部分。一旦发生变化,需要了解这一变化的类就会比较少。  如何理解"高内聚、松耦合"?
  所谓高内聚,就是指相近的功能应该放到同一个类中,不相近的功能不要放到同一类中。相近的功能往往会被同时修改,放到同一个类中,修改会比较集中。
  所谓松耦合指的是,在代码中,类与类之间的依赖关系简单清晰。即使两个类有依赖关系,一个类的代码改动也不会或者很少导致依赖类的代码改动。

六万人在线帮主播砍1台手机失败!客服挂断电话,回应来了你有没有收过昔日旧友,甚至前任的消息不是借钱,不是结婚发请帖,不是发广告,只是让你帮忙砍一刀?这砍的不是一分钱,而是咱之间的情分啊,所以pdd砍一刀又被称为友谊试金石友情终结者亲情再现黄金坑,策马新征程新能源汽车股,惊现黄金坑!一,基本面所属行业汽车服务概念特斯拉华为新能源汽车等。流通市值80。42亿,市盈率30。63二,技术形态从高位11。45元跌至6。28元,调整周期3个多月零跑上市,只为圈钱?撰文韩玲编辑冒诗阳(图视觉中国)零跑疯狂放卫星卖的越多亏的越惨继小鹏理想蔚来相继赴港上市后,二线造车新势力也开始坐不住了,零跑汽车正试图成为国内造车新势力中第四家上市公司。港交所网滴滴又有新动作,是绝地反击还是一蹶不振?说到滴滴出行这家网约车平台,相信大家都不会陌生。自从2016年合并了Uber中国的业务后,滴滴就确立了自身在中国网约车市场的主导地位。尽管美团等互联网巨头也陆续瞄准这一市场,都没能海信视像携手清华大学共建全息交互技术联合研究中心近日清华大学(自动化系)海信视像科技股份有限公司全息交互技术联合研究中心成立。海信视像通过旗下互联网平台公司聚好看与清华大学自动化系以多学科交叉和产学研用深度融合的方式,开展智能全木林森股份正式签约广联达科技3月18日,木林森股份有限公司(股票代码002745)与广联达科技股份有限公司(股票代码002410)在木林森中山小榄基地举行战略签约仪式。按照战略合作协议,双方将共建木林森照明工共享单车锁车难!无奈被多扣钱,应何处安放?共享单车从最初的野蛮生长至今,遭遇多重问题,屡屡成为话题中心。即便是目前,仍有诸多需要探索和改进的空间,为了解决当初的乱停乱放占道等乱象,目前很多城市,都划定了大量的电子围栏区域,Linux标准输入输出重定向管道文件权限后台启动进程命令1三种标准输入输出标准输入(STDIN),文件描述符号为0,默认从键盘获取输入标准输出(STDOUT),文件描述符号为1,默认输出到显示终端标准错误输出(STDERR),文件描述符荣耀Magic3Pro和Magic4Pro有什么区别?如何选择更好?荣耀Magic3Pro采用骁龙888Plus处理器LPDDR5内存UFS3。1闪存的性能组合,6。76英寸OLED双曲面屏,27721344分辨率,120Hz刷新率,周冬雨排列,支315汽车质量回顾新能源汽车问题频发,召回数量增长75。9实习记者李紫晴刘爽汽车行业发展迅猛,竞争日益激烈,在315国际消费者权益日即将到来之际,每一家车企都如临大考。汽车质量问题以及相关维权事件又将成为消费者们关注的焦点。新能源市场的快仅售2099元?12GB512GB5600mAh,优质新机不值钱了要是提起现在什么手机最吃香,也许许多人会脱口而出苹果,三星,华为,小米等品牌,诚然,在现在手机市场十分兴盛的今天,众多品牌可以说是群雄争霸,十分激烈。时候普及市场的各种品牌与品类也
鸿蒙AI机器人4块屏电子后视镜,十多万纯电SUV还得北京魔方?知嘹汽车林景行早在去年的广州车展上,北京汽车旗下的全新SUV北京魔方就曾首发亮相,凭借亮丽的车身颜色和夸张的造型设计,北京魔方吸引了不少的关注。近日,关于北京魔方的消息再度流出,新男子无证驾驶,被交警抓到却理直气壮是商家让我这么做的近几年我国的机动车种类越来越多,机动车市场上早已经不再是燃油车的天下了。尤其是新能源汽车被越来越多的人所接受,大有后来者居上的趋势。由于新能源汽车是一种新类型的汽车,因此我国对新能10年翻10倍,墨子号创下全球1200公里数据传输记录,美国眼都红了十年前的2012年,庞建伟院士首次实现100公里自由空间量子的数据传输十年后的2022年,墨子号为中国量子卫星团队带来了巨大的突破,创下了全球1200公里的量子数据传输新纪录。或许降入千元档!骁龙870三星E4屏幕,超大电池与超强散热确实香其实今年的手机市场,在处理器的选择方面跟去年还是一样的,市场首选处理器依旧还不是高端市场处理器,而是中高端市场上的处理器,比如骁龙870,以及天玑8100。不过我发现虽然天玑810官方跌至1299元,骁龙778G5000mAH大电池,OPPO真香千元机在很多小伙伴印象中,OPPO和VIVO就是高价低配的国产手机代表,因为这两个品牌,很长一段时间以来都是主打线下市场,同款处理器下,会比小米手机贵很多,经常把中端芯片卖到旗舰机的价格如何评价零跑汽车的T03工作和新能源汽车有关,抢答一下。首先这几年大家能观察到汽车消费市场消费升级的趋势,一个明显的特征就是很多入门车型也开始搭载很多以前在高端车型上才有的配置。在这个背景下,即使是小型纯外媒欧洲汽车世界感受到来自远东的强电流来源环球时报德国明镜周刊5月1日文章,原题中国白手起家的亿万富翁正在进攻西方汽车世界中国汽车制造商正在快速发展成为技术先驱。吉利蔚来小鹏等公司正在欧洲发力德国企业已发出警报。大众汽交流互联是中国汽车赶超全球的关键日前,在零跑汽车举办的零跑智能动力CTC电池底盘一体化技术发布会上,零跑汽车正式对外发布其智能动力CTC电池底盘一体化技术。据了解,零跑智能动力CTC技术,即celltochass特斯拉为ModelSX车型中控屏提供电动旋转功能近日对ModelSX车型的升级中,特斯拉为中控屏提供了电动旋转功能。特斯拉目前正致力于提供更丰富的车载娱乐体验,本次的电动旋转功能可以让中控大屏朝着主驾驶位和副驾驶位方向旋转,从而原材料价格暴涨动力电池厂商增收不增利,拿什么拯救?在新能源汽车市场渗透率快速提升,动力电池需求大幅拉升的市场环境下,动力电池企业却在今年一季度出现增收不增利的情况。4月底,动力电池企业相继披露今年一季度财报。各家财报显示,由于下游西安有哪些待遇好的工厂推荐?我在西安上过四年的大学,还是比较了解的!陕西比较好的企业第一个其实陕重汽研究所还可以,非机械类的211学校也能进,基本上转正之后工资到手都在8000,早上八点半上班,下午六点多下班