书籍详情
《软件小设计》[20M]百度网盘|亲测有效|pdf下载
  • 软件小设计

  • 出版社:电子工业出版社京东自营官方旗舰店
  • 出版时间:2016-05
  • 热度:11741
  • 上架时间:2024-06-30 09:38:03
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

本书作者是一名有10年以上经验的的程序员,热衷于收集各种编程新技术、新框架,在阅读了无数大部头的设计相关书籍后,有感而发,结合自身经验,才有了本书。

本书通俗易懂,也许没有严谨的定义,也许没有高深的理论,但是它能让你在不知不觉中领略设计的本来面貌。


编辑推荐

适读人群 :院校学生,希望由浅入深地了解程序设计原理的准程序员及程序员。


软件设计不是那种空中楼阁,不是那种读完不知所云的神秘图谶,恰恰相反,设计是每时每刻都在进行的日常活动,它一点都不神秘,也没那么复杂。

本书力图从基本的需求出发,通过思考和分析,总结设计过程的每个环节中可能出现的问题和解决的方法,这样就把设计从离散的点连起来,从而可以让读者了解设计的真实面貌。

内容简介

本书从最基本编程理论开始,探讨了软件设计中的基本概念,比如过程、对象、封装、继承、多态等;然后,在理清这些概念的基础上,书中集中探讨了构建好对象的若干原则;随后,在这些思想和原则的基础上,书中使用了大量的例子和篇幅分析了软件设计过程中可能遇到的典型问题及可能的解决方案。最后,本书会尝试脱离面向对象设计经验的束缚,直面设计的自然面貌:设计也许不轻松,但是也许并不那么的复杂。

作者简介

董向阳,上海梵讯网络技术有限公司项目经理,人们口中常说的“程序猿”,而且是高龄的(入行10年),.NET和Node.JS的铁粉,模式和架构爱好者,热衷于收集各种编程新技术、新框架;对于大师们的设计方案,向来都是先鄙视之,然后再膜拜之;“空”是其*为信奉的座右铭。

目录

目录
第1章 设计概论 1
1.1 面向对象程序设计 1
1.1.1 面向对象思想――任督二脉 1
1.1.2 面向对象设计原则――九阳神功 2
1.1.3 模式――乾坤大挪移 3
1.1.4 重构――太极拳 4
1.1.5 抽象与组合――独孤九剑 5
1.2 面向过程与面向对象 5
1.3 设计的宏观面貌 8
1.3.1 开发模式:自顶向下和自底向上 8
1.3.2 开发方式:迭代 9
1.3.3 开发结果:模块化 10
1.4 设计的微观世界 10
1.4.1 函数 10
1.4.2 对象 12
1.5 小结 15
第2章 设计原则 16
2.1 通用原则 16
2.1.1 KISS原则 16
2.1.2 代码之“形” 17
2.2 核心原则 20
2.2.1 单一职责原则(SRP):做一个专一的人 20
2.2.2 开放封闭原则(OCP):改造世界大部分不是破坏原来的秩序 21
2.2.3 里氏替换原则(LSP):长大后,我就成了你 24
2.2.4 接口分离原则(ISP):不要一口吃成胖子 26
2.2.5 依赖倒置原则(DIP):抽象的艺术才有生命力 27
2.3 扩展原则 28
2.3.1 迪米特法则:尽量不与无关的类发生关系 28
2.3.2 好莱坞法则:不要调用我,让我调用你 29
2.3.3 优先使用组合原则:多使用组合,少使用继承 31
2.4 小结 33
第3章 设计过程 34
3.1 设计目标 35
3.1.1 对象设计目标――“高内聚+低耦合” 35
3.1.2 对象设计过程――“折中+迭代+重构” 36
3.2 对象来源 38
3.3 对象创建 41
3.3.1 直接创建对象 41
3.3.2 间接创建对象 44
3.3.3 对象创建时机 51
3.4 对象管理 57
3.4.1 线性结构――集合对象 57
3.4.2 树形组合结构 65
3.5 对象交互 71
3.5.1 组合――直接引用,互通有无 71
3.5.2 中介者――间接通信 74
3.5.3 事件――使用回调函数通信 77
3.5.4 交互即耦合 84
3.6 对象存储 84
3.6.1 文件存储 85
3.6.2 数据库存储 94
3.7 访问控制 114
3.8 组织协作 132
3.8.1 代码的组织方式――“同步+异步+多线程” 132
3.8.2 业务的组织方式 138
3.9 对象布局 155
3.9.1 进入业务逻辑系统的第一道门槛――“Controller” 155
3.9.2 为什么要分层――分层的意义 155
3.9.3 如何分层――价值导向 156
3.9.4 层的对接――模块化与面向接口编程 171
3.9.5 接口的转换――适配器 172
3.9.6 接口的简化――门面 175
3.9.7 层的载体――包 179
3.9.8 分层的代价――效率和复杂性 180
3.9.9 层效率的有益补充 180
3.10 应对变化 183
3.10.1 变化的根源 184
3.10.2 变化的种类 184
3.10.3 处理变化的原则 186
3.10.4 应对变化的设计思路 189
3.11 小结 199
第4章 模式 200
4.1 模式定义 200
4.2 模式的意义 202
4.3 模式有缺点吗 203
4.4 设计的四个阶段 206
4.4.1 第一个阶段:设计不足 207
4.4.2 第二个阶段:模仿设计 208
4.4.3 第三个阶段:过度设计 208
4.4.4 第四个阶段:适度设计 213
4.5 反模式 214
4.5.1 开发流程反模式 214
4.5.2 数据库设计反模式 215
4.5.3 密码管理反模式 217
4.5.4 .NET开发反模式 217
4.6 小结 220
第5章 重构 221
5.1 重构动机 221
5.1.1 软件代码是会腐烂的 222
5.1.2 破窗效应 223
5.1.3 技术债务 224
5.2 重构的定义 224
5.3 重构难题 224
5.3.1 技术上的难题 225
5.3.2 管理上的难题 225
5.3.3 个人难题――程序员心理学 226
5.4 好代码长什么样 226
5.5 重构技法 230
5.5.1 基本技法――重命名 235
5.5.2 第一种技法――转移职责 237
5.5.3 第二种技法――封装细节 243
5.5.4 第三种技法――抽象对象 254
5.6 重构实施 259
5.6.1 重构的实施方式 259
5.6.2 重构的质量 261
5.7 小结 266
第6章 回到起点 267
6.1 忘掉模式 267
6.2 忘掉对象 269
6.3 回到起点 276
6.3.1 设计原本 277
6.3.2 设计的静态性 277
6.3.3 设计的动态性 289
后记 292

前言/序言


前言

计算机编程诞生至今,理论和实践的发展越来越丰富,各种编程语言也如雨后春笋般不断出现,不断壮大,不断消亡;随之而来的就是各种介绍计算机程序设计的书籍不断涌现。

在这些著作中,不仅有介绍编程语言的书,如初级的语言规范介绍、中级的语言特性应用、高级的设计模式和软件架构的实现,还有介绍编程技巧的书,如对象的设计、算法的分析、重构的实施、框架的应用,等等。这些书大部分都十分经典,内容集中在某一个具体的方面,就好比一颗颗珍珠零散地放在我们的案头上。

对于我这样从程序员过来的人来说,从入行的那天起,就不断地有高人给我推荐这些由浅入深的经典到不能再经典的书籍,于是我不断地采购这些书籍。 每当手里拎起这些沉重的书时,我就会深深地体会到知识的厚重。当然,从这些作者流畅而严谨的述说中,我还是逐渐地学习到了程序设计的各种知识。

在这样的情况下,有一天,在思考之余,我的脑中忽然有了一些大胆的想法:能否有一本书把这些经典的知识串起来,形成一个完整的体系呢?并且能否在这些理论和实践的基础上,再深挖一下设计本来的面目呢?良好的设计是否真的像那些高深的书籍描述的那样是那么高不可攀,必须要经过多年的修炼才能谈及呢?良好的设计是否真的需要那几十本厚重的书才能描述清楚吗?

为了回答这些问题,我决定写些什么,这是本书的写作初衷。有时想想,觉得我还真的有点不自量力,但是反过来想想,我又觉得,不妨就当抛砖引玉吧。我真心希望这本拙劣的小书能引起真正想学习编程技术的读者们的思考,能自己找到这些问题的答案。

本书将从最基本的面向对象编程开始,探讨面向对象设计中的基本概念,比如对象、元素、继承、多态等;然后,会探讨面向对象设计的基本原则;随后,会在这些思想和原则的基础上分析设计的基本流程及可能遇到的各种问题。在最后一部分,我们会脱离面向对象的束缚,直面设计的自然面貌。

书中的例子大部分都使用C#来实现,一部分例子使用Java和JavaScript来实现,不过好在代码都很简单,喜爱其他语言的读者看起来应该也是毫无压力的。

不过请大家注意,这本书里没有严密的论证,也没有严谨的定义,更没有高深的理论,因而还请大家抱着怀疑的态度阅读本书吧。如果你期望读到的是一本严谨、严密、高深的设计类书籍,那么这本书可能不适合你!

此外,现在大家经常会谈到“互联网思维”。在互联网时代,知识被快速地创建出来,然后飞速地累积和传播。本书的部分资料和图片,是通过搜索引擎直接找到并使用的,根本无法了解其最初的来源在哪里,因此书中如果引用了哪位仁兄的大作但是没有注明,还请见谅!你可以直接联系我,我会把你的作品及有关情况加到引用列表中。对于本书来说,我决定按照“互联网思维”的玩法来对待,就是你可以在引用本书观点的时候,说明引用自本书,当然不引用也没关系,这取决于你自己的选择,我只在意思想的传播。

最后,感谢我的老婆周花梅和我两个可爱的女儿董雨婷和董雨佳,正因为有了她们的爱和鼓舞,我才能够坚持完成本书!