`
0428loveyu
  • 浏览: 30577 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

《设计模式那点事》 - 书摘精要

 
阅读更多
(P03)

设计模式是实际经验的积累和总结,着重解决具体的实际问题;

(P04)

在程序中要尽量使用抽象类型作为对象实例变量类型,这样就保证了将客户程序与具体实现之间解耦,因为使用的是抽象类型,因此具体实现的改变不会影响抽象类型的改变;

“对象组合” —— 是指在一个对象中含有另外一个对象的引用,从而可以使用该内部对象的引用作出一些处理行为;

“开-闭原则”是一种很抽象的设计原则,更像是一种倡导的口号,其他设计原则都是为了实现“开-闭原则”的具体原则;

(P5)

设计模式或将成为改变一个人职场命运、一个企业成败关键、甚至一个社会经济发展的重要因素;

设计模式就像一本武功秘笈,要在学习中有所思、有所想、有所悟,才能达到软件设计思想的最高境界;

(P5)

设计模式分类:

按照范围来分,设计模式可以分为“类模式”和“对象模式”:

“类模式” —— 用来处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了;

“对象模式” —— 是处理对象间的关系,这些关系在运行时是可以变化的,更具动态性;

按照目的来分,设计模式可以分为“创建型模式”、“结构型模式”和“行为型模式”:

“创建型模式” —— 用来处理对象的创建过程;

“结构型模式” —— 用来处理类或者对象的组合;

“行为型模式” —— 用来对类或对象怎样交互和怎样分配职责进行描述;

按照目的的分类是采用最多的分类方式;

(P7)

让理论指导实践,实践充实理论,这样就会形成一种良性循环,不断提升自己的理论、实践能力;

(P49)

所谓“对象组合”,就是让对象作为类的成员变量,通过构造函数或者 set 方法给类对象的实例变量赋值;

一般“抽象工厂”和“工厂方法”都是联合在一起使用,这样的系统结构更加具有灵活性和弹性;

当设计一个软件系统的时候,要尽可能地对系统中出现的各种事物进行抽象,从而建立基础的抽象底层,这样做的目的就是让软件结构更加框架化、系统化,系统结构更加灵活,易维护、易扩展;

(P50)

抽象和具体实现的区别就在于:有了抽象,能做很多事情,并且新增功能不会对原系统的稳定性造成影响,系统更加模块化,软件更加易复用;而具体实现只能完成一件事情,并且新增功能对原系统影响比较大,对于相同结构软件不能复用,大大降低了开发效率,而且程序不易扩展;

(P51)

“工厂方法模式”和“抽象工厂模式”的区别:

“工厂方法模式”通过继承的方式实现应用程序的解耦,而“抽象工厂模式”则通过对象组合的方式实现程序解耦;

“工厂方法模式”用来创建一个抽象产品,具体工厂实现工厂方法来创建具体产品,而“抽象工厂模式”用来创建一个产品家族的抽象类型;

(P72)

“建造者模式”和“抽象工厂模式”的区别:

“建造者模式”着重于分步骤构造一个复杂对象;“抽象工厂模式”着重于多个系列的产品对象的构造;

“建造者模式”是在最后一步返回具体产品;“抽象工厂模式”是立即返回具体产品;

(P81)

在 Java 中,只有实现了 Cloneable 接口的类才会被虚拟机认为是能够克隆的;

(P129)

类适配器和对象适配器是外部对象和适配器的一种关联关系,类适配器使用继承方式,它是一种强关联关系,而对象适配器是利用组合的方式,将外部对象传入,它是一种弱关联关系;

(P133)

适配器设计模式主要用于系统的升级扩展,或者版本兼容性上,没有哪一个系统分析师会在软件设计阶段使用适配器模式的。适配器模式可以很好地解决版本兼容问题;

(P139)

“耦合” —— 就是两个实体的行为的某种强关联;

“脱耦” —— 将它们的强关联去掉,就是耦合的解脱,或称脱耦;

桥接模式中的脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化;

(P147)

桥接模式的魅力就在于将抽象和实现解耦,从而使两者可以相对独立地变化,而互不影响;

(P155)

软件设计模式的初衷就是为了解决软件复用、内聚、耦合等问题。在类与类之间,应该尽量使用弱关联的关系,如果两个类的关系确实非常紧密,则使用继承的强类型关系。一般情况下,要尽量避免使用高耦合度的设计方式;

(P156)

继承是一种牢不可分的强关联关系,而聚合的委托关系则是一种弱关联关系,后者有利于类之间的解耦;

(P182)

组合模式,主要处理树形结构以表示“部分-整体”的层次结构;

(P206)

设计模式是封装变化的最好阐释,无论哪一种设计模式针对的都是软件系统中存在“变化”的部分,然后使用抽象对这些“变化”的部分进行封装;

(P223)

外观没有封装子系统的类,只提供简化的接口;

(P381)

在一个软件项目的设计中,一般不建议采用中介者模式;

(P463)

抽象类应当拥有尽可能多的行为,应当拥有尽可能少的数据;

(P499)

访问者模式适用于数据结构相对稳定算法又易变化的系统,因为访问者模式使得算法操作增加变得容易。如果系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式;

(P509)

“开-闭”原则告诉我们,一个软件实体对于外部的需求变化,应该通过扩展来实现,而不是修改现有的内容来实现;

(P510)

在设计一个软件系统结构时,尽可能地将会发生变化的内容独立出来,单独进行封装,而将这一部分作为抽象为其他部分调用;

(P528)

依赖倒置原则是实现“开-闭”原则的重要途径,在程序中要尽量使用抽象类型作为对象实例变量类型,这样就保证了将客户程序与具体实现之间解耦;

(P536)

依赖倒置原则的核心是依赖抽象编程,而不依赖具体实现类;

接口属于客户,不属于它所在的类层次结构;

(P544)

在实际的软件设计中需要面向抽象编程,在程序中使用抽象类型作为参数类型,然后将具体的子类型作为实际运行的参数传入,实现具体的行为处理;

(P545)

迪米特法则实现要点是:尽量不要让类和类之间建立直接的关系,如果需要建立关系,最好通过其友元类来中转建立关系;
分享到:
评论

相关推荐

    《精通CSS与HTML设计模式》(Pro CSS and HTML Design Patterns)中文版高清扫描版[PDF](part08)

    每种设计模式、示例和源代码都经过了精心设计,易于实现和使用。通过阅读此书,可大大提高读者在Web 设计和开发中的效率和创造力。 本书结构清晰,示例丰富,实践性强,适用于所有Web 开发和设计人员。 编辑推荐 ...

    swift-模仿书摘中心的展开按钮封装的一个控件

    在Swift编程语言中,开发UI界面时,我们经常需要创建自定义控件来满足特定的设计需求。本项目“swift-模仿书摘中心的展开按钮封装的一个控件”就是这样一个例子,它模仿了书摘中心的展开按钮效果,提供了一个轻量级...

    多看kindle书摘导出工具

    【多看Kindle书摘导出工具】是一种实用的软件工具,专为用户设计,用于从多看Kindle系统中提取书摘,并将其导出为易于管理的TXT文本格式。这款工具极大地提升了阅读爱好者整理和回顾笔记的效率,使得珍贵的阅读心得...

    初中语文文摘文苑微书摘

    【标题】:“初中语文文摘文苑微书摘”与我们探讨的是人生哲理与科学思考,虽然表面上看似与IT技术无关,但其中蕴含的思维方式和观察问题的角度对IT从业者同样具有启示作用。 【描述】:“初中语文文摘文摘”暗示了...

    编写高质量代码 Web前端开发修炼之道 书摘精要

    样式标准则是CSS,它允许开发者独立地定义页面元素的外观和布局,使页面设计更加灵活和统一。行为标准涵盖DOM(文档对象模型)和ECMAScript(JavaScript的标准版本),它们处理网页的交互和动态功能。 书中提到了...

    BookSnippets:更快地存储书摘!-开源

    BookSnippets是一个高效且便捷的工具,专为读书爱好者和学生设计,旨在帮助他们更好地管理、检索和分享书中的精彩片段。这款应用采用Python编程语言,结合Tkinter图形用户界面库和Pmw扩展库进行开发,实现了对书摘的...

    《iOS6开发指南》精彩书摘

    以下是从书摘中提炼的知识点: ### 基础篇 1. **第一个iOS应用程序**:书中首先介绍了如何使用Xcode创建一个简单的“HelloWorld”程序,涵盖了工程模板的选择、应用的运行机制和生命周期、视图控制器的生命周期...

    一款很棒的书摘软件 微信小程序 中山大学软件创新大赛十强参赛项目.zip

    作为一款书摘软件,它特别针对微信小程序平台进行设计和开发,旨在为用户在阅读过程中提供方便快捷的摘录、整理和分享功能。 【知识点详解】 1. **微信小程序**:微信小程序是一种轻量级的应用形态,无需下载安装...

    WPF in action 书摘 (上)

    ### WPF in Action 书摘知识点总结 #### 资源(Resource)的使用与查找路径 **资源**是WPF应用程序中的一个核心概念,它允许开发者以一种灵活且可复用的方式管理各种UI元素,如颜色、字体、图像等。 ##### 查找路径...

    2021年读书-《心智、知识与道德》书摘:社会主义计算大论战.docx

    2021年读书-《心智、知识与道德》书摘:社会主义计算大论战.docx

    书摘_全新思维 ppt 文件

    全新思维的书摘,看看别人怎么解读这本书,希望能对您有点帮助

    行业文档-设计装置-多功能书签.zip

    它的市场定位、营销策略以及与出版行业的合作模式也是设计装置领域需要关注的商业方面。 6. **知识产权**:在设计装置的开发过程中,保护知识产权是非常关键的。设计师可能需要申请专利,以防止他人复制或侵权。 7...

    书摘

    书摘

    初中语文文摘生活名人名言解读_书摘

    初中语文文摘生活名人名言解读_书摘

    韦尔奇新着《赢》经典书摘.EXE

    韦尔奇新着《赢》经典书摘.EXE

    《趁年轻 折腾吧》ppt书摘.rar

    通过《趁年轻 折腾吧》的PPT书摘和读书笔记,我们可以更直观地理解和吸收这些知识点,将作者的理念融入到自己的生活和工作中,激发自己的潜力,创造更加精彩的人生。而51pptmoban.com这个文件名可能是指一个提供PPT...

    行业文档-设计装置-新型阅读书签.zip

    在本压缩包“行业文档-设计装置-新型阅读书签.zip”中,主要包含了一份名为“新型阅读书签.pdf”的文件。这份文档很可能是关于设计领域的一个创新项目,特别是针对阅读体验的提升。书签作为阅读辅助工具,历史悠久,...

Global site tag (gtag.js) - Google Analytics