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

《软件设计精要与模式 第2版》 - 书摘精要

 
阅读更多
(P15)

面向对象思想包括三个核心要素,即“封装”(Encapsulation)、“继承”(Inheritance)与“多态”(Polymorphism),它将面向对象技术推到了思想的境界;

(P17)

“封装变化”需要与“抽象”相结合,遵循“面向接口编程”的思想,如此才能做到对扩展开放;

(P18)

“封装变化”是设计模式的核心思想;

(P21)

抽象的类型,可以因为实现的不同而体现为不同的类型,从而执行不同的功能;

“多态”有机地将“封装”、“继承”与“抽象”结合起来:

—— 利用“封装”的原理,定义了对象类型;
—— 通过“继承”保证不同类型之间的关系;
—— “抽象”则提供了对象多态的能力;

(P22)

“多态”保证了程序的灵活性,因为它将对象形态的决定权交给了调用者;

调用者可以根据系统需求,创建不同类型的实例,只要该实例被统一抽象为相同的父类型;

(P23)

“多态”决定了接口实现的可替代性,它使得扩展成为可能;

对象的“封装”、“继承”与“多态”保证了对象的高内聚与低耦合,有利于软件模块的可复用,保证了程序的可扩展,这正是面向对象思想体现在软件设计中的最大优势;

软件设计需要经验的积累,不过有时还得需要那么一点灵感;

面向对象设计的原则是对面向对象思想的提炼,它比面向对象思想的核心要素更具可操作性,但与设计模式相比,却又更加的抽象,是设计精神要义的抽象概括;

(P24)

对象的高内聚与细粒度有利于对象的重用;

(P28)

“对扩展开放”的关键是“抽象”,而对象的多态则保证了这种扩展的开放性。开放原则首先意味着我们可以自由地增加功能,而不会影响原有系统。这就要求我们能够通过继承完成功能的扩展。其次,开放原则还意味着实现是可替换的。只有利用抽象,才可以为定义提供不同的实现,然后根据不同的需求实例化不同的实现子类;

(P29)

“开放封闭原则”还可以统一起来理解。由于我们对扩展实现了开放,才能够保证对修改是封闭的。开放利用了对象的抽象,封闭则在一定程度上利用了封装。最佳的做法仍然是要做到分离对象的变与不变,将对象不变的部分封装起来,并遵循良好的设计原则以保障接口的稳定;至于对象中可能变的部分,则需要进行抽象,以建立松散的耦合关系;

(P31)

抽象属于高层,细节属于低层,低层依赖于高层,而不是高层依赖于低层;

“依赖倒置原则”与“面向接口编程”的思想不谋而合;

GOF 在《设计模式》一书中旗帜鲜明地提出了面向对象设计的首要原则,那就是“针对接口编程,而不是针对实现编程”;

(P34)

面向对象设计原则是面向对象思想的体现:

—— “单一职责原则”与“接口隔离原则”体现了“封装”的思想;
—— “开放封闭原则”体现了对象的“封装”与“多态”;
—— “Liskov 替换原则”是对对象“继承”的规范;
—— “依赖倒置原则”是“多态”与“抽象”思想的体现;

(P35)

设计模式是“封装变化”思想的最佳阐释;

“抽象”没有具体的实现,就代表了一种无限的可能性,使得扩展成为可能;

(P36)

“继承”的耦合度要强于“组合”(“合成”或“聚合”);

优先选择“对象”的“组合”,而不是“继承”,即“合成”/“聚合”复用与原则;

为了进一步降低“组合”关系的耦合度,还应该遵循“依赖倒置原则”,对要组合的类进行“抽象”;

(P47)

一个外部具体对象的引入,必然会给一个模块带来与外部模块之间的依赖;

(P49)

模块与模块间之所以产生依赖关系,正是因为有具体对象的存在;

使用硬编码方式创建一个对象,必然会带来对象之间的具体依赖;

(P53)

在 .NET 中,虽然可以利用<section></section>对配置文件进行分节,但终究不够直观;

(P54)

实现“依赖注入”的前提是“面向接口编程”,而辅助的技术则是利用“反射技术”;

(P66)

“重构技术”涵盖了软件工程、面向对象设计、设计模式、单元测试等技术;

(P67)

“测试驱动开发”强调快速实现功能,再以“重构”改善代码的结构;

(P73)

当一个对象承担了过多的责任时,就有必要考虑对其进行职责划分,除非该对象是一个用于协调对象关系的类;

“测试驱动开发”与“重构”密不可分。“测试驱动开发”是一种演进的设计方式,程序结构的设计根据测试用例的驱动,随时可能会修改,此时我们就需要学会利用“重构”的利器。在“重构”的时候,仍然不能放弃“测试驱动开发”,并利用“单元测试”工具保证程序的可靠性以及“重构”的正确性;

(P139)

“集合”是一个管理和组织数据对象的数据结构;

“集合对象”除了能够存储数据外,还必须提供访问其内部数据的行为方式,这是一种遍历机制;

“集合对象”拥有两个职责:一是存储内部数据;二是遍历内部数据;

(P145)

.NET 框架中的所有集合均实现了 IEnumerable 接口,如果是泛型集合,则在实现了 IEnumerable 接口的同时,还实现了 IEnumerable<T> 接口;

(P156)

“面向接口编程”是面向对象编程思想中最重要的一个原则;

根据“封装变化”的原理,对易于变化的部分进行抽象,定义为接口(注:并非语法意义上的接口,而是指公开给调用方的外部定义);

(P161)

“委托”可以看做是模式中的惯用法 —— “委托链”用在“观察者模式”中,可以简化对被观察者列表的操作;“委托链”还可以用于“命令模式”,甚至于“职责链模式”中;

(P203)

在面向对象设计中,复用对象的方法除了“继承”,还可以采用“组合”;

(P345)

分层架构可以达到如下目的:分散关注、松散耦合、逻辑复用和标准定义;

(P362)

在没有 ORM 框架的情况下,使用辅助类是一个比较好的策略,利用它来完成数据库基本操作的封装,可以减少很多与数据库操作有关的重复代码,这体现了对象复用的原则;

(P364)

没有“抽象”,就意味着程序是僵化难以扩展的;没有“封装”与“继承”,就意味着程序无法重用;

(P367)

应用 ORM 框架带来的最直接好处就是,缩短了整个项目开发的周期;
分享到:
评论

相关推荐

    软件设计精要与模式

    《软件设计精要与模式(第2版)》关注的焦点是软件设计,涵盖了大部分与设计有关的基本要素,包括面向对象思想、设计模式、重构、测试驱动开发、极限编程以及软件体系架构。其中,尤以设计模式为主,深入探讨了软件...

    软件设计精要与模式(源代码)

    《软件设计精要与模式(源代码)》是一份涵盖了软件设计原则、模式和技术的宝贵资源,主要基于C#编程语言。这份资料旨在帮助开发者深入理解如何构建可维护、可扩展且高效的软件系统。以下是对其中关键知识点的详细阐述...

    软件设计精要与模式源码

    这是书籍《软件设计精要与模式》所有源码,测试环境为: vs2005和SQL2000。 目录简要如下: 1.设计之道 2.封装变化 3.体验重构 4.测试驱动开发实践 5.设计由你掌握 6.Factory Method 模式 7.Composite模式 8....

    《软件设计精要与模式》高清带书签

    本书关注的焦点是软件设计,涵盖了大部分与设计有关的基本要素,包括面向对象思想、设计模式、重构、测试驱动开发、极限编程以及软件体系架构。其中,尤以设计模式为主,深入探讨了软件设计过程中的原则与模式,并...

    软件设计精要与模式原代码

    《软件设计精要与模式原代码》是一本深入探讨软件设计模式和最佳实践的书籍,旨在帮助开发者理解和应用各种设计模式来提升软件的可维护性、可扩展性和可复用性。设计模式是软件工程中经过长期实践验证的、解决常见...

    软件设计精要与模式(源码)

    《软件设计精要与模式(源码)》是软件开发领域中一本重要的参考资料,它涵盖了软件设计的关键概念和模式,旨在提升开发者对于高效、可维护的软件架构的理解和实践能力。源码作为辅助材料,提供了实际示例,帮助读者...

    《软件设计精要与模式》.part2

    《软件设计精要与模式》.part2

    《软件设计精要与模式》.part3

    《软件设计精要与模式》.part3

    《软件设计精要与模式》.part1

    《软件设计精要与模式》.part1

    matlab精要编程及高级应用三-MATLAB5.3精要 编程及高级应用.part5.rar

    从matlab的基本功能讲起,与具体应用相结合,如信号处理,控制系统设计分析,符号数学,系统仿真等。本书主要读者对象为广大的科技工作者和理工科大学的本科生、研究生。  (试了若干次,不能五个附件同时上传,...

    六大实践精要实战企业数字化转型-发布版本-李洋.pdf

    2. 战略设计原则:适度超前原则、业务导向原则、价值导向原则和用户导向原则,这些原则为企业制定适合自身发展的数字化战略提供了指导。 3. “一横三纵”战略要点:强调以业务为主导,结合科技、安全和生态三个关键...

    《Unity Shader 入门精要》URP 案例Chapter9-15.zip

    《Unity Shader 入门精要》URP 案例Chapter9-15 《Unity Shader 入门精要》URP 案例Chapter9-15 《Unity Shader 入门精要》URP 案例Chapter9-15

    《Delphi精要》及配书源代码-程序设.rar

    《Delphi精要》是一本深入探讨Delphi编程语言的专著,这本书旨在帮助程序员掌握...通过阅读《Delphi精要》,学习并调试源代码,读者可以在短时间内提升自己的Delphi编程能力,同时也能更好地理解和运用软件设计原则。

    软件测试精要 书籍 董杰 扫描版

    软件测试精要 书籍 董杰 扫描版 还不错的一本书

    《C++程序设计精要教程学习指导与习题解答》各章典型习题微课讲解PPT.zip

    《C++程序设计精要教程学习指导与习题解答》是一本针对初学者和进阶者深入理解C++编程语言的教材。这本书旨在通过详细解析每个章节的关键概念和技巧,帮助读者掌握C++的核心知识,并通过习题解答来巩固所学。而与之...

    强化学习精要 核心算法与TensorFlow实现-1积分

    《强化学习精要 核心算法与TensorFlow实现》 冯超著 共386页; 内容简介 《强化学习精要 : 核心算法与 TensorFlow 实现》用通俗幽默的语言深入浅出地介绍 了强化学习的基本算法与代码实现,为读者构建了一个完整的...

    漏洞战争 :软件漏洞分析精要 高清扫描版

    总之,《漏洞战争:软件漏洞分析精要》是一本集理论与实践于一体的优秀书籍,它不仅为软件安全领域内的专业人士提供了深入学习和研究的资料,也为信息安全爱好者提供了一种深入了解漏洞本质的方法,是信息安全领域不...

    《C++程序设计精要教程》PPT.rar

    《C++程序设计精要教程》是一份专为学习C++编程语言精心编写的教学资料。这份教程通过一系列PPT课件,系统地涵盖了C++的基础到进阶的知识点,旨在帮助初学者和有一定基础的学习者掌握C++的核心概念和技术。 在教程...

    设计模式精解- GoF 23种设计模式解析附C++实现源码

    懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 一直想把自己的学习经验以及在项目中的应用经历拿出来和大家共享,却总是下不了这个...

Global site tag (gtag.js) - Google Analytics