童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

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

6月18日 托天庙投稿
  当程序员说去设计模式时,你是否会一脸懵逼,到底什么是设计模式呢?
  很多人应该听说过设计模式(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的著作中的内聚性原则发展出的。
  意思:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。
  举例:该原则意思简单到不需要举例!
  目的:类的复杂性降低,可读性提高,可维护性提高。
  刚入行的时候,在想什么样的代码是好代码?看到很多前辈的文字都说好的代码要符合高内聚,低耦合,但是我听到这样的解释,是这样的
  而现在对设计模式有了一定程度上的学习,感觉懂了一些,小伙伴们你们学会了吗?
  高内聚,低耦合?
  内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系;
  耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。
投诉 评论 转载

用Axure制作产品需求文档(PRD)模板(附完整案例)可下很早之前就有用Axure替代需求文档的讨论,平台15年就有《Word产品需求文档,已经过时了》这样详尽的分析。今天作者带来的是他在Axure替代需求文档的实战思考,希望对大家有……程序员经常说的设计模式到底是什么?当程序员说去设计模式时,你是否会一脸懵逼,到底什么是设计模式呢?很多人应该听说过设计模式(Designpattern),又或多或少的看过或用过设计模式,但是实际用在开发过……这款给医生的专业APP,设计上有着怎样不同的要求?本文作者主要与我们分享一款Web医疗应用设计的细节。enjoy医疗保健在任何一个国家都是非常重要的组成部分,它关乎每一个人的生命健康。而随着时代的发展,医疗技术本身逐步提……要做一款让用户尖叫的好产品,你必须知道用户成本收益模型无论如何,对于用户成本收益分析的思想还是非常重要的,他可以帮助更好地规划产品,更有目的性地做好产品的某一个功能模块,甚至更有目的性地做好用户定位。什么样的产品可以称之为好……iOS和Android规范解析:底部tab导航底部tab导航是现在应用里非常常见的一种组件。关于这种最常用到的组件,你了解的全面吗?下面我们来分别看一下MaterialDesign设计规范以及iOS设计规范里是怎么规定的。……电商问答,促转化的一种新方式电商行业经过多年的发展,已经走到了非常成熟的路径,多数电商网站都具备完善的商品,库存,订单和售后体系。不过,仍然还存在很多新的难题。对于消费者来说,面对琳琅满目,数亿级的商品面……个性化推荐技术,对新闻阅读产品形态的改变内容并无好坏之分,你所厌恶的或许正是他人所喜爱的,因此鉴于个人爱好而形成的个性化推荐技术就成了内容分发的有效方法。用户是一个点,传统媒体是一个面,传统媒体不可能只做一个点……万字长文:在智能手机上设计AR应用有哪些挑战?应该如何应对?编者按:随着苹果ARkit与谷歌的ARCore平台推出,AR在智能手机上的应用也会变得越来越多。AR作为一个全新的交互媒介,在开发相关应用时必然会遇到各种各样的挑战。本文对可能……如何让进度条帮助你达到产品目标?我实习已经一年了,最近刚毕业成为一个产品,现主要负责活动方面的web页面原型设计。最近设计的一个活动,让我对进度条了解比较多,想记录下来,分享给大家。进度条的定义及其使用……激励手段下,用户主动与被动的思考用户激励对运营来说是一个经常性动作。但是如何激励?使用什么样的办法效果最好?有的时候让我们很头疼。这篇文章帮我们梳理了激励措施中主动和被动两种不同的形式在产品生命周期中的侧重点……优化输入框,让填写如丝般顺滑看似简单的输入框,实际上对用户体验有着十分明显的营销,那么如何优化?看文章如何解读。填写是一件麻烦事,我们或多或少感受糟糕体验。设计开发者也很无奈,感觉身体被掏空。怎么办……设计规范详解组件控件结构体系:操作类本篇文章是设计规范中的操作类,也是设计规范系列的第七篇,最近一直写这个系列,都写腻了,也没什么挑战性。继这个系列之后,我会写一些超有意思的文章,想想都好激动哦。由于涉及到……
产品经理的需求提得太随意怎么办?产品经理怎么跟程序员相处“手指水泥”模式的陷阱,互联网金融怎么做?移动应用开发者的末世之舞:做APP的好时机已过?智能硬件创业者需要的“羊毛”思维互联网医疗自闭症App详情分析不会制造麻烦怎么做得好产品经理?需求分析:用户到底想要什么生鲜O2O死亡笔记:5种死法,“殊途同归应聘产品经理的学习方案一个产品经理的永恒命题:就不能既好用又好看吗?在线租车女CEO创业自述:这么难,为什么还要创业?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界