生活工程体验信仰哲学精神
投稿投诉
精神世界
探索历史
哲学文学
艺术价值
信仰创造
境界审美
体验技术
技能工具
工程信息
医学生产
生活运用
操作能力

程序员经常说的设计模式到底是什么

3月7日 醉殇别投稿
  当程序员说去设计模式时,你是否会一脸懵逼,到底什么是设计模式呢?
  很多人应该听说过设计模式(Designpattern),又或多或少的看过或用过设计模式,但是实际用在开发过程中总有点心有余而力不足的感觉。那肯定是对设计模式的理解有少许偏差或者不够深入。先不谈某种具体的模式,先来看看什么是设计模式?
  什么是设计模式?
  设计模式是一套代码设计经验的总结。项目中合理的运用设计模式可以巧妙的解决很多问题。
  经验的总结:抱着代码虐我千百遍,我待代码如初恋的心态,最终得出来的套路。
  合理的:要对设计模式的使用场景有一定的认识后才使用,不要滥用。如:输出一句helloworld,非要强行给加上各种模式。
  问:为什么,答:总感觉少了模式!。
  巧妙的解决了很多问题:被广泛应用的原因。
  为什么要提倡DesignPattern呢?根本原因是为了代码复用,增加可维护性。那么怎么才能实现代码复用呢?
  设计模式之六大原则
  开闭原则(OpenClosePrinciple)
  1988年,勃兰特梅耶(BertrandMeyer)在他的著作《面向对象软件构造(ObjectOrientedSoftwareConstruction)》中提出了开闭原则,它的原文是这样:Softwareentitiesshouldbeopenforextension,butclosedformodification。
  意思:软件模块应该对扩展开放,对修改关闭。
  举例:在程序需要进行新增功能的时候,不能去修改原有的代码,而是新增代码,实现一个热插拔的效果(热插拔:灵活的去除或添加功能,不影响到原有的功能)。
  目的:为了使程序的扩展性好,易于维护和升级。
  里氏代换原则(LiskovSubstitutionPrinciple)
  意思:里氏代换原则是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
  举例:球类,原本是一种体育用品,它的衍生类有篮球、足球、排球、羽毛球等等,如果衍生类替换了基类的原本方法,如把体育用品改成了食用品(那么软件单位的功能受到影响),就不符合里氏代换原则。
  目的:对实现抽象化的具体步骤的规范。
  依赖倒转原则(DependenceInversionPrinciple)
  意思:针对接口编程,而不是针对实现编程。
  举例:以计算机系统为例,无论主板、CPU、内存、硬件都是在针对接口设计的,如果针对实现来设计,内存就要对应到针对某个品牌的主板,那么会出现换内存需要把主板也换掉的尴尬。
  目的:降低模块间的耦合。
  接口隔离原则(InterfaceSegregationPrinciple)
  使用多个隔离的接口,比使用单个接口要好。
  举例:比如:登录,注册时属于用户模块的两个接口,比写成一个接口好。
  目的:提高程序设计灵活性。
  迪米特法则(最少知道原则)(DemeterPrinciple)
  1987年秋天由美国NortheasternUniversity的IanHolland提出,被UML的创始者之一〔Booch〕等普及。后来,因为在经典著作《ThePragmaticProgrammer》而广为人知。
  意思:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
  举例:一个类公开的public属性或方法越多,修改时涉及的面也就越大,变更引起的风险扩散也就越大。
  目的:降低类之间的耦合,减少对其他类的依赖。
  单一职责原则(Singleresponsibilityprinciple)
  该原则由罗伯特C马丁(RobertC。Martin)于《敏捷软件开发:原则、模式和实践》一书中给出的。马丁表示此原则是基于汤姆狄马克(TomDeMarco)和MeilirPageJones的著作中的内聚性原则发展出的。
  意思:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。
  举例:该原则意思简单到不需要举例!
  目的:类的复杂性降低,可读性提高,可维护性提高。
  刚入行的时候,在想什么样的代码是好代码?看到很多前辈的文字都说好的代码要符合高内聚,低耦合,但是我听到这样的解释,是这样的
  而现在对设计模式有了一定程度上的学习,感觉懂了一些,小伙伴们你们学会了吗?
  高内聚,低耦合?
  内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系;
  耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。
投诉 评论

年社区党委书记述职报告2020年社区党委书记述职报告作为社区一把手,我深感任务艰巨,责任重大。面对新时代新任务新要求,面对社区治理的新任务,居民的新期望,我认识到只有不断加强学习,才能确保自己……放弃也是一种美五年级优秀作文人生短暂,与浩瀚的历史长河相比,世间一切恩恩怨怨,功名利禄皆为短暂的一瞬,福兮祸所伏,祸兮福所倚。得意与失意,在人的一生中只是短短的一瞬。以下是小编为大家整理的放弃也是一种美五……谈家长对孩子学习方法的辅导谈家长对孩子〔b〕学习方法〔b〕的辅导孩子由于年龄不大,自控能力和计划协调能力较差,因此,父母与孩子一起协商每一阶段的学习安排非常必要。每天复习些什么内容,在什么时候起床……富士急鬼屋三楼不开放不少冒险者抗议反对封闭恐惧是人类难以克服的心理,但是有时候恐惧又可以让人感觉到刺激,因此用它作为设计理念,鬼屋这个模式就诞生了!这种刺激又不危险的娱乐方式在开始之初就受到了大批喜欢冒险的人喜爱,而日……财讯非主流的金融业印象当中,只有迫不得已才会踏进典当行的门,生活饥寒交迫了,就要踏上高利贷的贼船,和我好像搭不上什么边。今天的典当行脱胎换骨了而且还挺火,不少人给予关注,当然……热门二年级日记模板锦集九篇二年级日记篇1伴随着冬日里温暖阳光,满怀着喜悦心情,20xx年元旦如约而至。昨天下午,我们在闻涛小学风雨操场举行快乐迎新年活动。三年级各个班选手,表演节目都非常出色……读塔克的郊外有感最近,我看了《塔克的郊外》,这本小说是《时代广场的蟋蟀》的姊妹篇。主要讲塔克(一只住在时代广场的老鼠)和亨利(塔克的猫咪邻居兼好友)在《时代广场的蟋蟀》中认识的蟋蟀柴斯特,在功……擦指甲油会得灰指甲吗擦指甲油对其女性来说是很普遍的事情,因为把自己的指甲涂抹指甲油,变得非常的好看,那么擦指甲油会得灰指甲吗?很多人总是把指甲油和灰指甲联系在一起。擦指甲油一般不会得灰指甲。……招之造句用招之造句大全1、高校扩招之后,高职生成为一个庞大的特殊群体,他们给高职院校学生教育和管理工作带来了难度。2、君子敬鬼神而远之,小人畏鬼神而招之,非有所惧,即有所求,阿宝扎之,顺天承命……记一次有趣的实验作文600字截止今时,在过去的学业中,我与同学、老师在实验课上做过的实验不计其数。其中一些有趣的实验我至今难忘。我小时候最爱玩磁铁了,而且变着花样玩,总是玩得不亦乐乎,在这一次实验,……程序员经常说的设计模式到底是什么当程序员说去设计模式时,你是否会一脸懵逼,到底什么是设计模式呢?很多人应该听说过设计模式(Designpattern),又或多或少的看过或用过设计模式,但是实际用在开发过……初中散文银河静静的絉里在银河公园的一角,默默注视,才发现她的景色是忧伤寂寞的,但却那么动人,那么美丽。平静的河面宛如一面水晶做的镜子,光滑圆润,偶尔泛着微微的涟漪。这条明净的河也有一……
曾经香菜的保鲜工艺美丽的音乐喷泉爱君无悔生死相随第十七节喜忧参半月考年月淘宝重大规则变动汇总再忙的日子再难的时光抽点时间吃茶去叙事作文那一次老师误解了我爸爸妈妈的爱初中作文600字三篇关于最熟悉的人600字作文银企无止境颠覆性共计面向全国中信银行中小型资本售珍惜妈妈您真好对脊髓损伤患者来说,什么才是对恢复有好处的饮食?龙珠斗士Z繁体中文版公布9月16日开启封测我的老师张艺兴的新歌BOOM我听了,说说我的看法吧北京特色美食排行榜,去北京一定不能错过的十大老北京美食!运输补充协议外星人就在月球背面读后感字考古周迅没看过周迅街拍,才会说别人是人间Chanel给未来孩子的一封信激励自己的经典座右铭精选不一样的豪门媳妇郭晶晶向内看见家庭,向外看见世界

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找