设计模式在整个Java的学习路线图中扮演着承上启下的作用。

在整个软件生命周期中,唯一不变的就是变化。设计模式就是要在软件设计、编码中对现有问题的一种总结,并从中寻求应对变化的策略

自己初次接触设计模式有以下几个感觉:

  • 内容很抽象。
  • 示例都能看得懂,但不知道实际中如何应用。
  • 不理解为什么要把“好好的程序”设计成这么复杂?
转眼之间到了需要自己参与需求分析、设计,并且维护之前留下的遗产代码(Legacy Code)的时候了。
再次开始学习设计模式,有了新的收获:

站在变化的角度去看,设计模式虽然不能直接帮助你写出完美的代码,做出完美的设计。但却能从更抽象的层次去看待、预测和应对变化

个人比较喜欢”Head First 设计模式“的讲解风格,下面是学习中总结的一些建议:

  1. 从实际的场景中学习:在学习每种模式时,这本书都会给出一个贯穿模式学习的示例。了解示例的需求,以及需求的演变。这即是实际开发中经常会遇到的情况,也会对自己的学习有很好地启发。
  2. 学完一个模式后,自己亲自动手实现这个模式:通常书本会自带示例代码,但只是阅读和运行示例代码是没有意义的。只有自己动手,从最初的需求开始,实际去编码才能有真正的收获。
  3. 学习新模式前,记得要复习和回顾:这个经验对于设计模式的学习是有效的。原因在于设计模式是需要不断回顾和思考的,每次地回顾即是记忆,也是总结的好机会。由于一些模式有关联,所以不断巩固和积累会越学越轻松。
  4. 注意总结设计原则:这是我非常喜欢这本书的一个原因。每个设计模式的背后都隐藏着一个或多个设计原则,比如”多用组合,少用继承“,”针对接口编程,不针对实现编程“。这些都是在实际的Java发中需要不断实践和牢记的原则。
  5. 先思考,再看解答:每个需求变化发生时,你会怎么做?这是非常好的磨练思考的机会。思考过后再看解答,不但能加深理解,还可以提出自己的见解
  6. 学完一个模式,看看自己身边有哪些应用:比如学完了”装饰者模式”(Decorator),Java中有哪些这样的模式呢?学完模式后,能够加深和提高对这些API的使用吗?看看“Java与模式”,来一次纵向学习。
  7. 用模式的眼光来阅读代码:学习设计模式前,很多代码读起来觉得难以下手,比如eclipse的一些代码。由于运用了大量的设计模式,完全不像J2SE代码可以顺序的阅读。了解了设计模式后,会有“原来这这么解决问题的”这种感叹。接下来打算写一写eclipse中的设计模式。
  8. 把学到的设计模式知识将给好朋友听,或者作为学习笔记写出来:能讲清楚了,证明是真的理解了。
  9. 运用设计模式:注意不能滥用哦。在重构代码或者写新程序的时候,当设计完成时多问几个问题,比如需求变化要怎么应对,扩展时如何最少地改动代码。开始时会有强烈的冲动,但切记不要在生产代码上大规模使用杀伤性模式,你懂的。自己开一个小项目做做还是很不错的。
  10. 从设计模式开始:设计模式是在面向对象设计之上的一种抽象,同时各种框架同样也是对现实问题的抽象,你可能不会实际用到工厂模式,但其中的思想可以在各种框架设计中找到。不断地提出问题、发现问题,使用各种方式去解决,这才是设计模式真正的启发

学习Java设计模式的10条建议的更多相关文章

  1. 关于Java代码优化的44条建议!

    关于Java代码优化的N条建议! 本文是作者:五月的仓颉 结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,作者的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼 ...

  2. <转>“人脉投资”的10条建议

    谁都知道人脉很重要,所以有些人非常勤奋的“做人脉”,他们往往会这样做—— 积极的参与各类线下活动,逢人就换名片.加微信. 见到名人或者重要人物必合影,而且他们还会掏出手机来给你看. 逢年过节,给所有他 ...

  3. 10条建议帮助你创建更好的jQuery插件

    本文总结了帮助你创建更好jQuery插件的10条建议.分享给大家供大家参考.具体说明如下: 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就 ...

  4. 如何提高Axure设计的效率 提高Axure设计效率的10条建议

    如何更有效率的使用axure,这是新手需要掌握的技能.本文作者从实际经验中归纳出来的十条建议十分值得学习,转载分享给大家: Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危 ...

  5. 提高Axure设计效率的10条建议

    http://www.woshipm.com/ucd/92153.html Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危险.这款软件是如此的直观以至于很多用户可以在没有 ...

  6. 给备战NOIP 2014 的战友们的10条建议

    应老胡要求,要写10条建议= = begin 1. 注意文件关联 比如 halt 前要close(input); close(output); 还有就是一定要打这两句话= = 2. 快排,大家都懂得. ...

  7. 提高Axure设计效率的10条建议 (转)

    Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危险.这款软件是如此的直观以至于很多用户可以在没有接受过任何正式培训的情况下进行使用.他们可能不知道的是他们可能没有以恰当的方 ...

  8. Java设计模式(10)代理模式(Proxy模式)

    理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...

  9. 学习java设计模式有用吗?懂这六个原则,编程更轻松

    学习java设计模式有用吗?懂这六个原则,编程更轻松 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实 ...

随机推荐

  1. Samba 'smbcacls'命令安全绕过漏洞

    漏洞版本: Samba 4.x 漏洞描述: Bugtraq ID:66232 CVE ID:CVE-2013-6442 Samba是一款实现SMB协议.跨平台进行文件共享和打印共享服务的程序. 当使用 ...

  2. Mint Linuxubuntu 字体配置文件

    <?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fon ...

  3. .Net 垃圾回收机制原理(二)

    英文原文:Jeffrey Richter 编译:赵玉开 链接http://www.cnblogs.com/yukaizhao/archive/2011/11/25/dot_net_GC_2.html ...

  4. Flash 导出图片和声音

    命令文件 PolarBear_jsfl.zip Flash Professional 编辑器命令,用来导出 flash 库中的图片和声音 使用步骤: 1. 首先下载 PolarBear_jsfl.zi ...

  5. 第四章:ARP 地址解析协议

    网络接口有一个硬件地址,48bit的值,在硬件层次上进行的数据帧交换必须有正确的接口地址.tcp/ip有自己的地址,32bit的IP地址. 但是知道主机的IP地址并不能让内核发送一帧数据给主机.内核( ...

  6. zoj 3537 Cake 区间DP (好题)

    题意:切一个凸边行,如果不是凸包直接输出.然后输出最小代价的切割费用,把凸包都切割成三角形. 先判断是否是凸包,然后用三角形优化. dp[i][j]=min(dp[i][j],dp[i][k]+dp[ ...

  7. Harris 角点检测

    一 .Motivation 对于做图像处理的人来说,Harris角点检测肯定听过,1988年发表的文章"A combined corner and edge detector"描述 ...

  8. Bzoj-2190 仪仗队 欧拉函数

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2190 简单的欧拉函数题,实际上就是求gcd(x,y)=1, 0<=x,y<=n ...

  9. Java HashMap实例源码分析

    引言 HashMap在键值对存储中被经常使用,那么它到底是如何实现键值存储的呢? 一 Entry Entry是Map接口中的一个内部接口,它是实现键值对存储关键.在HashMap中,有Entry的实现 ...

  10. A Tour of Go Methods and Interfaces

    The next group of slides covers methods and interfaces, the constructs that define objects and their ...