大话设计模式

程杰

出版时间

2007-12-01

ISBN

9787302162063

评分

★★★★★

标签

编程

书籍介绍

本书通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解GOF(设计模式的经典名著——Design Patterns:Elements of Reusable Object-Oriented Software,中译本名为《设计模式——可复用面向对象软件的基础》的四位作者EIich Gamma、Richard Helm、Ralph Johnson,以及John Vlissides,这四人常被称为Gang of Four,即四人组,简称GoF)总结的23个设计模式。本书共分为29章。其中,第1、3、4、5章着重讲解了面向对象的意义、好处以及几个重要的设计原则;第2章,以及第6到第28章详细讲解了23个设计模式;第29章是对设计模式的全面总结,附录部分是通过一个例子的演变为初学者介绍了面向对象的基本概念。本书的特色是通过小菜与大鸟的趣味问答,在讲解程序的不断重构和演变过程中,把设计模式的学习门槛降低,让初学者可以更加容易地理解——为什么这样设计才是好的?是怎样想到这样设计的?以达到不但授之以“鱼”,还授之以“渔”的目的。引导读者体会设计演变过程中蕴藏的了、智慧。 本书适合编程初学者或希望在面向对象编程上有所提高的开发人员阅读。

AI导读
核心看点
  • 情景对话讲解23种设计模式
  • 通过代码重构演示设计演变
  • 降低门槛传授设计思维智慧
适合谁读
  • 编程初学者及学生群体
  • 希望提升面向对象能力的开发者
  • 对传统枯燥教材感到厌倦的读者
读前提醒
  • 部分生活案例略显牵强需辩证看
  • 代码示例基于C#语言请留意
  • 建议结合实战项目加深理解
读者共识
  • 语言风趣幽默通俗易懂
  • 入门引导极佳但深度有限
  • 适合建立概念需进阶阅读

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "单例模式(singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。"
  • "策略模式(Strategy):它定义了算法的家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 -Disign Pattern"
  • "abstract与interface的本质区别:abstract class表示的是"is-a"关系,interface表示的是"like-a"关系"
  • "就一个类而言,应该仅有一个引起他变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。其实要云判断是否应该分离出类来,也不难,那就是如果你能够想到多于一个的动机云改主一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离。"
  • "开放-封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。 这个原则其实是有两个特征,一个是说‘对于扩展是开放的‘,另一个是说’对于更改是封闭的‘。"
  • "策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合"
  • "策略模式的Strategy类层次为Context定义了一系列的可供重用的算法或行为。继承有助于析取出这些算法的公共功能 策略模式的优点是简化了单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试 策略模式就是用来封装算法的,但在实践中,我们发现可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同实践应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性 在基本的策略模式中,选择所用具体实现的职责由客户端对象承担,并转给策略模式的Context对象,这本身没有解除客户端需要选择判断的压力,而策略模式与简单工厂模式结合后,选择具体实现的职责也可以由Context来承担"
  • "单一职责原则,就一个类而言,应该仅有一个引起它变化的原因 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。其实要去判断是否应该分离出类来,也不难,那就是如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离。 在编程时,我们要在类的职责分离上多思考,做到单一职责,这样写出来的代码才是真正的易维护,易扩展,易复用,灵活多样"
作者简介
程杰:高级软件工程师 & 高级培训讲师。从事软件开发一线工作近八年时间。曾在申银万国证券公司、上海杨浦区政府、朝华集团下属网游公司、香港晨兴集团等多行业项目开发中担任主程及项目负责人,有丰富的大中型软件开发经验,以及多年的软件设计与项目管理经验。曾任加拿大慧桥培训中心金牌讲师,主持.NET高级软件工程师的培训工作;早年从事高中数学教学工作,曾在江苏常州重点高中任教时获得过市教学一等奖,这些教学和培训经历让作者对如何以易懂的语言讲解艰深的技术知识有了深刻的理解。 本书作者集多年实际项目开发经验和丰富教学培训经验于一身,准确把握住编程初学者的视角,以浅显幽默的语言向读者诠释了面向对象设计模式的精髓。
目录
第1章 代码无错就是优?——简单工厂模式 1
1.1 面试受挫 1
1.2 初学者代码毛病 2
1.3 代码规范 2
1.4 面向对象编程 4

显示全部
用户评论
这是一本有趣的书,且看作者取名字的艺术:“代理”变成“戴励”,“做嫁衣”变成“卓贾易”,“学雷锋”变成“薛磊风”,哈哈
还不错,算是原创书中的精品了,语言幽默,通俗易懂,有点儿Head First的味道。可惜是C#的,而且有些地方比较牵强,代码读着不很舒服。
只读了第一章,非常棒的书。
读了一半,翻看大半。不知作者技术功力如何,表达能力却实不敢恭维。例子牵强附会,对话罗嗦冗余,甚至有点贫。对于一个稍有设计模式概念的人来讲,有价值的也就是些UML图和少许C#(应该是C#)了。
这种题才看多了也疲劳
很有趣的一本入门书籍,虽然专业课里有软件设计模式和设计原则相关的内容,但都是一笔带过,没有深入展开的,而且都是理论性的学习,导致学了和没学一样,不能够很好的理解内容。《大话》虽然是十多年前的书,很多文字中透露出历史的味道,但这本书的例子都挺生动的,做到了有趣,还是挺易读的,读完对于这些设计模式的概念和优缺点基本上也都了解了。
老板让我了解下责任链 但是这本书好像讲的太浅了点。从头开始看,越看越觉得我是小菜,我老板是大鸟??? 装饰模式无法理解,衣服class去继承人class?感觉看了也不知道怎么用在写测试用例里面诶!读完了!知识浓度低,哈哈哈哈哈哈,看了个热闹,看的时候能大致理解意思,看完了再回忆发现好多个都不知道在说啥了……能用到的不多,也就单例、工厂吧,其他的想起来再查书好了。
我不是开发,只是个产品,包着学习的态度阅读,方便日后跪舔开发。 简化形象的比喻可以让外行人一定程度感受到代码的逻辑思路,但这种比喻,是很考验作者能力的,且过度的简化是否会造成歧义,我不知道,但依然感谢作者。
例子有点牵强附会,看完之后还是云里雾里
二刷了,的确对设计模式有了更具体的了解,基本上代码也完全可以轻松用c++改写。还是得有一定的c++基础的。
下载
收藏