设计模式在整个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. [转] Android自动化测试之MonkeyRunner录制和回放脚本(四)

    测试脚本录制: 方案一: 我们先看看以下monkeyrecoder.py脚本: #Usage: monkeyrunner recorder.py #recorder.py  http://mirror ...

  2. Windows 7/8 创建WIFI热点

    问题描述:很多人(特别是中国的大学生)都拥有一台联网的笔记本电脑,而手机使用的却是电信运营商提供的限制数量和速度的GPRS. 很多人不敢想象:联网的笔记本电脑能够将其流量以WiFi的形式共享出来供其它 ...

  3. oracle 根据汉字返回拼音函数

    参见戴明明的博客,oracle 根据汉字返回拼音函数,由于他的博客里没有提供完整的代码,研究了一个多小时,才弄出来: 上来贴代码吧.. --------------Type Definition CR ...

  4. 大四实习准备5_android广播机制

    2015-5-1 android 广播机制 5.1简介 分为标准广播(Normal broadcasts)(无先后顺序,几乎同时接收,不可截断)和有序广播(Ordered broadcasts)(有先 ...

  5. [原]Unity3D深入浅出 - GUI控件

    Unity的GUI类提供了丰富的界面控件,通过组合这些控件,完成和用户交互的界面. Lable:绘制文本和图片 Box:绘制一个图形框 Button:绘制一个响应单击事件的按钮 RepeatButto ...

  6. Cacti 'graph_xport.php' SQL注入漏洞

    漏洞版本: Cacti < 0.8.8b 漏洞描述: Bugtraq ID:66555 Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. Cact ...

  7. 探秘Java虚拟机——内存管理与垃圾回收

    本文主要是基于Sun JDK 1.6 Garbage Collector(作者:毕玄)的整理与总结,原文请读者在网上搜索. 1.Java虚拟机运行时的数据区 2.常用的内存区域调节参数 -Xms:初始 ...

  8. Java [leetcode 37]Sudoku Solver

    题目描述: Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated ...

  9. js判断checkbox是否已选

    代码: <h2>Default</h2> @using (Html.BeginForm()) { <ul> <li>@Html.CheckBox(&qu ...

  10. SharePoint默认的欢迎WebPart中超链接样式

    转:http://www.cnblogs.com/Bear-Study-Hard/archive/2010/03/22/1691641.html 在core.css文件中 .ms-SpLinkButt ...