学习Java设计模式的10条建议
设计模式在整个Java的学习路线图中扮演着承上启下的作用。
在整个软件生命周期中,唯一不变的就是变化。设计模式就是要在软件设计、编码中对现有问题的一种总结,并从中寻求应对变化的策略。
自己初次接触设计模式有以下几个感觉:
- 内容很抽象。
- 示例都能看得懂,但不知道实际中如何应用。
- 不理解为什么要把“好好的程序”设计成这么复杂?
站在变化的角度去看,设计模式虽然不能直接帮助你写出完美的代码,做出完美的设计。但却能从更抽象的层次去看待、预测和应对变化。
个人比较喜欢”Head First 设计模式“的讲解风格,下面是学习中总结的一些建议:
- 从实际的场景中学习:在学习每种模式时,这本书都会给出一个贯穿模式学习的示例。了解示例的需求,以及需求的演变。这即是实际开发中经常会遇到的情况,也会对自己的学习有很好地启发。
- 学完一个模式后,自己亲自动手实现这个模式:通常书本会自带示例代码,但只是阅读和运行示例代码是没有意义的。只有自己动手,从最初的需求开始,实际去编码才能有真正的收获。
- 学习新模式前,记得要复习和回顾:这个经验对于设计模式的学习是有效的。原因在于设计模式是需要不断回顾和思考的,每次地回顾即是记忆,也是总结的好机会。由于一些模式有关联,所以不断巩固和积累会越学越轻松。
- 注意总结设计原则:这是我非常喜欢这本书的一个原因。每个设计模式的背后都隐藏着一个或多个设计原则,比如”多用组合,少用继承“,”针对接口编程,不针对实现编程“。这些都是在实际的Java发中需要不断实践和牢记的原则。
- 先思考,再看解答:每个需求变化发生时,你会怎么做?这是非常好的磨练思考的机会。思考过后再看解答,不但能加深理解,还可以提出自己的见解。
- 学完一个模式,看看自己身边有哪些应用:比如学完了”装饰者模式”(Decorator),Java中有哪些这样的模式呢?学完模式后,能够加深和提高对这些API的使用吗?看看“Java与模式”,来一次纵向学习。
- 用模式的眼光来阅读代码:学习设计模式前,很多代码读起来觉得难以下手,比如eclipse的一些代码。由于运用了大量的设计模式,完全不像J2SE代码可以顺序的阅读。了解了设计模式后,会有“原来这这么解决问题的”这种感叹。接下来打算写一写eclipse中的设计模式。
- 把学到的设计模式知识将给好朋友听,或者作为学习笔记写出来:能讲清楚了,证明是真的理解了。
- 运用设计模式:注意不能滥用哦。在重构代码或者写新程序的时候,当设计完成时多问几个问题,比如需求变化要怎么应对,扩展时如何最少地改动代码。开始时会有强烈的冲动,但切记不要在生产代码上大规模使用杀伤性模式,你懂的。自己开一个小项目做做还是很不错的。
- 从设计模式开始:设计模式是在面向对象设计之上的一种抽象,同时各种框架同样也是对现实问题的抽象,你可能不会实际用到工厂模式,但其中的思想可以在各种框架设计中找到。不断地提出问题、发现问题,使用各种方式去解决,这才是设计模式真正的启发。
学习Java设计模式的10条建议的更多相关文章
- 关于Java代码优化的44条建议!
关于Java代码优化的N条建议! 本文是作者:五月的仓颉 结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,作者的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼 ...
- <转>“人脉投资”的10条建议
谁都知道人脉很重要,所以有些人非常勤奋的“做人脉”,他们往往会这样做—— 积极的参与各类线下活动,逢人就换名片.加微信. 见到名人或者重要人物必合影,而且他们还会掏出手机来给你看. 逢年过节,给所有他 ...
- 10条建议帮助你创建更好的jQuery插件
本文总结了帮助你创建更好jQuery插件的10条建议.分享给大家供大家参考.具体说明如下: 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就 ...
- 如何提高Axure设计的效率 提高Axure设计效率的10条建议
如何更有效率的使用axure,这是新手需要掌握的技能.本文作者从实际经验中归纳出来的十条建议十分值得学习,转载分享给大家: Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危 ...
- 提高Axure设计效率的10条建议
http://www.woshipm.com/ucd/92153.html Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危险.这款软件是如此的直观以至于很多用户可以在没有 ...
- 给备战NOIP 2014 的战友们的10条建议
应老胡要求,要写10条建议= = begin 1. 注意文件关联 比如 halt 前要close(input); close(output); 还有就是一定要打这两句话= = 2. 快排,大家都懂得. ...
- 提高Axure设计效率的10条建议 (转)
Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危险.这款软件是如此的直观以至于很多用户可以在没有接受过任何正式培训的情况下进行使用.他们可能不知道的是他们可能没有以恰当的方 ...
- Java设计模式(10)代理模式(Proxy模式)
理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...
- 学习java设计模式有用吗?懂这六个原则,编程更轻松
学习java设计模式有用吗?懂这六个原则,编程更轻松 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实 ...
随机推荐
- Windows 7/8 创建WIFI热点
问题描述:很多人(特别是中国的大学生)都拥有一台联网的笔记本电脑,而手机使用的却是电信运营商提供的限制数量和速度的GPRS. 很多人不敢想象:联网的笔记本电脑能够将其流量以WiFi的形式共享出来供其它 ...
- sublime text格式化插件
sublime text 软件其实是自带格式化插件的,但是它默认的格式化插件,不太好用,且没有快捷键(虽然自己可以设置). 其默认的格式化是在 Edit -> Line -> Re ...
- poj3252
好了,我的数论渣爆了………… 首先[n,m]内的round number显然就是f[m]-f[n-1] 即问0~x内有多少round number: 设x的二进制位数为t: 首先很好分析出在这个范围 ...
- ↗☻【HTML5秘籍 #BOOK#】第8章 使用CSS3
开发商前缀-moz- Firefox-webkit- Chrome和Safari-ms- Internet Explorer-o- Opera 伪类创造的交互性虽好,但已经有点过时了.主要问题是—太突 ...
- css页面重构面试题
偶然间又看到博客园中这两道页面重构面试题.题一:分别用2个DIV,3个DIV,5个DIV实现水平垂直均居中显示一个宽50px,高200px的正十字架.思路:水平垂直均居中的实现,当然非absolute ...
- 怎么找到MyEclipse->add struts capabilities
问:MyEclipse:我的工程右键可以MyEclipse->add struts capabilities之前有,后来不知怎么就没有了,谁知道怎么弄出来是struts 答:你已经add过一次了 ...
- tomcat server.xml配置详解
由于 Tomcat 基于 Java,实际上在各种 Linux 发行版里的配置方法都大同小异,只是我看见在 Arch Linux 环境里搭建 Tomcat 的文章比较少,所以在 Arch Linux 实 ...
- SqlServer中截取字符串
SQL Server 中截取字符串常用的函数: .LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要截 ...
- C/C++:原码、反码和补码
正数的原码.反码和补码是一模一样的. 负数的反码的符号位跟原码一样,但其余各位取反. 负数的补码是其反码的最末位加1得到,即原码取反加1. 补码的补码就是原码. 浮点数的存储格式随着机器的 ...
- [tensorflow in a nutshell] tensorflow简明教程 (第一部分)
原文链接: https://medium.com/@camrongodbout/tensorflow-in-a-nutshell-part-one-basics-3f4403709c9d#.31jv5 ...