《HeadFirst设计模式》读后感——对学习设计模式的一些想法
最近看完了《HeadFirst设计模式》,GOF的《设计模式——可复用面向对象软件的基础》的创建型模式也读完了,经历了从一无所知到茅塞顿开再到充满迷惑的过程。
不得不说《HeadFirst设计模式》是一本非常好的入门书,每一章都是先提出问题,然后讨论、分析,引导出相应的设计模式,再一步一步的实现,幽默的语言和有趣的插图,让人轻松愉快的学习了一个模式。之前我对学习设计模式是有很大的畏难情绪的,上网一搜一看,妈个鸡,动不动就什么GOF什么23个设计模式,然后找个工厂方法或者抽象工厂的例子一看头都炸了,直接就放弃了。但是,看来这本书的第一章学习了策略模式之后,感觉设计模式也就那那么回事呀,然后继续往后看,除了少数几个模式,简直就是哪里不会学哪里,so easy……那少数几个其实也就是观察者,抽象工厂和策略模式,有可能是我智力太低理解不了,感觉真的抽象。但是我读了GOF的书又看来网上一些例子后再回过来看,这本书里抽象工厂的表述似乎太复杂了。一般的例子里工厂就一两个方法,具体产品也是就一两个,而这本书里工厂有6个方法,8个具体产品(两个族,每个族4个),当时我就懵逼了……但是这并不影响,因为这本书只是起个引导作用,虽然厚达600页但是并没有完整的介绍所有的GOF的23个设计模式,于是我又不得不从裤裆里掏出了绝世武功秘籍《设计模式——可复用面向对象软件的基础》……
秘籍就是秘籍,连名字都这么霸气(长),而且既然是绝世武功定然不是一般路人能够轻易领悟的。前三章(其实第二章没看)看完,除了类图很清晰以外,其他都很难懂啊(╯‵□′)╯︵┻━┻!C++和Smalltalk是什么鬼?(其实C++还是看的懂一点)不过,这书应该是像参考手册一样,变用边看,常看常新的吧……
我觉得要记住一种设计模式最好就是记住它的UML类图,因为设计模式就是几个类和他们之间的关系,有了图,就很容易用代码实现了。但是这只是一个空架子而已,是没有灵魂的躯壳。为什么要使用设计模式,各个模式的优缺点和适用性是什么?这些应该更重要一些。 这在GOF的书里都有详细描述,但是我大多看不懂……后来在我在看网上的例子的时候注意到了面向对象设计原则(其实《HeadFirst设计模式》里也有介绍,不过很介绍得很简单),然后才发现还有GRASP这个东西(在这里看到的)。结合GRASP和设计原则大概就能回答前面的问题了,而且还能帮助我更好的理解GOF的书。我想设计模式应该是遵循设计原则而产生的自然的结果,而不是我们去迎合设计模式。那篇博客的作者提到了两本书——《UML和模式应用》、《敏捷软件开发—原则、模式与实践》应该看看……(话说有太多书没看了啊,大学的时间都浪费在打游戏上了……)
话说我到底为什么要学习设计模式呢?我想大概是该给自己定个目标了吧,一个菜鸟也有要当架构师的梦。如果有一天老板过来说:“小伙子,你来做架构吧!公司已经开会决定了!”的时候,我也要念两句诗……然后就是升职加薪,出任CTO,和董事长谈笑风生……咳咳,暴力……啊不,白日做梦不可取……快点滚去写代码!
《HeadFirst设计模式》读后感——对学习设计模式的一些想法的更多相关文章
- [设计模式]JDK中的设计模式
转载自:http://blog.csdn.net/gtuu0123/article/details/6114197 本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图. 首先来个总结,具体 ...
- 小菜学习设计模式(五)—控制反转(Ioc)
写在前面 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Metho ...
- 小菜学习设计模式(四)—原型(Prototype)模式
前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...
- 小菜学习设计模式(三)—工厂方法(Factory Method)模式
前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...
- 小菜学习设计模式(二)—单例(Singleton)模式
前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...
- 小菜学习设计模式(一)—模板方法(Template)模式
前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...
- 1.2 《硬啃设计模式》 第2章 学习设计模式需掌握的UML知识
要看懂设计模式,你需要懂类图(Class Diagram),也需要懂一点对象图(Object Diagram),下面介绍一些UML的必要知识,以便你学习设计模式. 属性.操作 下图简单介绍类的属性和操 ...
- 【HeadFirst设计模式】13.与设计模式相处
模式: 是在某情境下,针对某问题的某种解决方案. 要点: 让设计模式自然而然地出现在你的设计中,而不是为了使用而使用. 设计模式并非僵化的教条,你可以依据自己的需要采用或者进行调整. 总是使用最简单的 ...
- 跟着ZHONGHuan学习设计模式--桥接模式
转载请注明出处! ! !http://blog.csdn.net/zhonghuan1992 全部配套代码均在github上:https://github.com/ZHONGHuanGit/Desig ...
随机推荐
- P6 EPPM R16.1安装与配置指南(二)
P6 EPPM R16.1安装与配置指南(一) http://www.cnblogs.com/endv/p/5634620.html P6 EPPM R16.1安装与配置指南(二) 环境变量配置 新建 ...
- 重构第28 天 重命名bool方法(Rename boolean method)
详解:本文中的”为布尔方法命名”是指如果一个方法带有大量的bool 参数时,可以根据bool 参数的数量,提取出若干个独立的方法来简化参数. 理解: 我们现在要说的重构并不是普通字面意义上的重构,它有 ...
- 重构第5天:提升字段(Pull Up Field)
理解:提升字段和前面讲解的方法提公很类似,可以说方式都是一样的.就是把继承类中经常用到的字段,提出来 放到基类中,达到通用的目的.提高代码重用性和可维护性. 详解:如下重构前的代码: using Sy ...
- 在aspx怎么引用public string getPicurl(string picurl)?
刚才在论坛上看到一帖: Insus.NET尝试做了一下,直接使用一个Img标签是无法实现.因为函数中返回的即是一个img html标签,因此在aspx页再不能使用Img了. 现在可以回到网友的问题,那 ...
- sql date()函数,时间格式
(1).GETDATE() 函数从 SQL Server 返回当前的日期和时间. 语法 GETDATE() 实例 下面是 SELECT 语句: SELECT GETDATE() AS CurrentD ...
- 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
[源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...
- 【学习整理】Tarjan:强连通分量+割点+割边
Tarjan求强连通分量 在一个有向图中,如果某两点间都有互相到达的路径,那么称中两个点强联通,如果任意两点都强联通,那么称这个图为强联通图:一个有向图的极大强联通子图称为强联通分量. 算法可以在 ...
- fibonacci数列从a到b的个数
Description 我们定义斐波那契数列如下: f1=1 f2=2 f(n)=f(n-1)+f(n-2)(n>=3) 现在,给定两个数a和b,计算有多少个斐波那契数列中的数在a和b之间( ...
- spring jdbcTemplate query
1. spring jdbcTemplate query需要实现mapRow方法 package com.cdv.apolloagent.jdbc.dao.impl; import java.sql. ...
- (旧)子数涵数·C语言——指针
一.什么是指针? 指针在百度的解释:是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值. 也就是说,指针是用于指向某一内存单元. 简而化之,指针便是地 ...