学习Java设计模式的10条建议

时间:2023-01-10 22:36:37

设计模式在整个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. POJ 1751 Highways (最小生成树)

    Highways Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  2. 常用HTML meta 标签属性(网站兼容与优化需要),meta标签

    常用HTML meta 标签属性(网站兼容与优化需要),meta标签 标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索 ...

  3. JAVA远程执行Shell脚本类

    1.java远程执行shell脚本类 package com.test.common.utility; import java.io.IOException; import java.io.Input ...

  4. Mysql 学习之EXPLAIN作用

    一.MYSQL的索引 索引(Index):帮助Mysql高效获取数据的一种数据结构.用于提高查找效率,可以比作字典.可以简单理解为排好序的快速查找的数据结构.索引的作用:便于查询和排序(所以添加索引会 ...

  5. json生成方式

    <script type="text/javascript"> //初始化需要json化的参数 var data = { No: No, Type: Type }; / ...

  6. uniq 命令详解

    作用: 报告或忽略文件中的重复行,一般与sort 连用. 选项:-c count 在每列前显示该行重复出现的次数     -d repeated, 仅显示重复出现的行列     -f skip fie ...

  7. 关于swagger——WebApi一个controller中出现多个Get是出现错误的处理

    如 /// <summary> /// 测试处理 /// </summary> public class TestController : ApiController { // ...

  8. query

  9. poj 2155(未完成)

    线段树套线段树模板题 链接:http://poj.org/problem?id=2155 题解: 代码: #include <bits/stdc++.h> using namespace ...

  10. loj&num;2038&period; 「SHOI2015」超能粒子炮・改

    题目链接 loj#2038. 「SHOI2015」超能粒子炮・改 题解 卢卡斯定理 之后对于%p分类 剩下的是个子问题递归 n,k小于p的S可以预处理,C可以卢卡斯算 代码 #include<c ...