设计模式,应该是很多ED心目中牛B的编程方式。

上回说到ED的好书POEE,实际上便是一本专门讲企业开发中使用的设计模式中的书。

设计模式,并不多,基本上看完GoF的这边《Design Pattern》便可以有足够了解了。

而实际开发中常用的设计模式更是屈指可数,Singleton,Factory,Facade,Active Record、Provider等等。

就那么几个,花花功夫,仔细了解一下这几个,然后在实际编码中应用一下,便可以算是掌握了。

设计模式,并不难。

它是开发中非常必要的知识,实际上,是非常基础的知识,并不牛B。

开发的时候,需要时刻明确自己的目标:解决问题。

解决问题才是最重要的。

设计模式的存在,是为了更好的维护、管理代码,或者是为了扩展性;绝对不可以为了设计模式而模式。

在Java程序中,为了模式而模式的现象蛮普遍的。

我猜想这是因为Java是一门工业语言,有大量的ED使用的缘故。

ED把设计模式的使用,当成是一种可以炫耀的编程技巧,或者说,他们遵从的编码规范中,要求他们去使用某某设计模式。

至于为什么要使用设计模式,最常见的理由便是:为了将来可以XX,或者YY。

程序开发中,有一句名言:“Pre-mature optimization is the root of all evil”。

过早优化,是万恶之源。

非常多的情况下,将来预想中的XX或者YY;并不会发生。大部分代码,写了之后就会被丢弃掉,再也不会有人去维护。

当XX或者YY发生的时候,往往,都是会推倒重来。

除非你很牛B,只有牛到一定程度,才有可能对将来可能发生的情况做好合理的预测,并预留出改善、调整的空间。

但非常讽刺的是,为将来做设计的最好方法就是:什么都不做。

只有空白,才能够留下最大的发挥空间。

现在为将来可能发生的情况,做了编码,任何一行编码,都是很可能是在为将来添加限制、制造麻烦。

现在写下去的代码,将来,都是要被删掉的;能够不写,就不写。

在任何时候,都应该保持代码简洁。

函数,尽可能的短;当一个函数的长度,超过一个屏幕的时候,便应该考虑重构、拆分。

牛B的程序,都应该是简单、易懂的;采用大量的设计模式,复杂得让人无法直接看懂,或许有它的意义以及应用场景,但这绝对不是编程功力牛B的表现。

打个比方,设计模式就是武术招式。

学徒,必然需要熟悉什么“有风来仪”或者“屁股朝后平沙落雁式”。

但更高的境界是:无招胜有招。

简单、直接的把代码搞定。

Python大牛沈崴有云:“得道的程序员,既不封装,也没有重复代码。”
http://eishn.blog.163.com/blog/static/6523182010102342531684/

作业

1. 使用一种编译语言实现 Singleton 模式

2. 使用一种动态语言实现 Singleton 模式

3. 说说对 Provider 模式的理解。

男主角:Wuvist(新浪微博),真名翁伟,自称胖程序员一个,幸好已婚。学习.NET出身,现常用Python做服务器端开发,曾任新加坡某创业公司主程。公司被Techcrunch blog过后,觉得新加坡生活太过安逸,终于在去年辞职只身回家乡汕头创业,活跃于珠三角技术沙龙,热衷于与其他技术宅分享。

本文作者:Wuvist

女主角:Katze,Wuvist的老婆,女程序员,在某跨国投行任Unix系统管理员,常被Wuvist嘲笑技术太差。

51CTO系列:

  1. 宅男程序员给老婆的计算机课程之0:认清本质
  2. 宅男程序员给老婆的计算机课程之1:认清实际
  3. 宅男程序员给老婆的计算机课程之2:怎么看待牛人
  4. 宅男程序员给老婆的计算机课程之3:架构比较
  5. 宅男程序员给老婆的计算机课程之4:SQL vs NoSQL
  6. 宅男程序员给老婆的计算机课程之5:设计模式
  7. 宅男程序员给老婆的计算机课程之6:模版引擎
  8. 宅男程序员给老婆的计算机课程之7:运维的重要性
  9. 宅男程序员给老婆的计算机课程之8:控制器
  10. 宅男程序员给老婆的计算机课程之9:数据模型
  11. 宅男程序员给老婆的计算机课程之10:做,就对了!
  12. 宅男程序员给老婆的计算机课程之11:域模型

本文转自 Wuvist 51CTO博客,原文链接:http://blog.51cto.com/wuvist/847706

宅男程序员给老婆的计算机课程之5:设计模式相关推荐

  1. 宅男程序员给老婆的计算机课程之9:数据模型

    这次来讲MVC中最后的M. Model,几乎可以说是网页应用的核心. 之前课程提到过网页应用是由数据库驱动,而在很多场景,数据库 = M : M = 数据库. 所谓的ORM: object relat ...

  2. 宅男程序员给老婆的计算机课程之8:控制器

    设计模式再"高级"一点,便是所谓的"框架"了. 从事Web开发,一般都会接触到MVC框架这个概念. M:也就是Model,直接跟网站数据库相关. V:也就是Vi ...

  3. 宅男程序员给老婆的计算机课程之4:SQL vs NoSQL

    男主角:Wuvist(新浪微博),真名翁伟,自称胖程序员一个,幸好已婚.学习.NET出身,现常用Python做服务器端开发,曾任新加坡某创业公司主程.公司被Techcrunch blog过后,觉得新加 ...

  4. 宅男程序员给老婆的计算机课程之6:模版引擎

    [51CTO独家特稿]设计模式再"高级"一点,便是所谓的"框架"了. 从事Web开发,一般都会接触到MVC框架这个概念. M:也就是Model,直接跟网站数据库 ...

  5. 宅男程序员给老婆的计算机课程之10:做,就对了!

    [51CTO独家特稿]学以致用,很多时候,学习一样东西最好需要能够在实际中应用起来. 所以我在第2课"怎么看待牛人"中强调的必须"看代码 + 写代码". 不过我 ...

  6. 宅男程序员给老婆的计算机课程

    声明: Technorati 标记: IT生活 本文档来自:http://developer.51cto.com/art/201203/321936.htm 宅男程序员给老婆的计算机课程之0:认清本质 ...

  7. 转自51CTO的帖子——宅男程序员给老婆的计算机课程

    在51CTO上闲逛的时候,看了这个系列的帖子.感觉不错,特转发于此,留做纪念. 原文链接: 宅男程序员给老婆的计算机课程之0:认清本质 宅男程序员给老婆的计算机课程之1:认清实际 宅男程序员给老婆的计 ...

  8. 命名自喜剧团体,宅男程序员三个月写出的编程语言是如何改变世界的?

    大数据文摘出品 来源:Zdnet 编译:洪颖菲.李可.Vicky.李雷 1989年,荷兰的一位叫Guido Van Rossum的宅男程序员觉得其他语言都不好用,于是花三个月创造了一种新的编程语言. ...

  9. 宅男程序员不会告诉你用Java实现用一张照片进行GPS定位这么简单

    从微信某个朋友圈随便找了一位美女发的照片 ​ Java对照片进行分析,效果如下 ​ 获得结果如下: {海拔=0 metres, 手机=Xiaomi, 纬度=24.41046111111111, 型号= ...

最新文章

  1. 将一个MapString, String写入properties文件,并且覆盖原来的内容
  2. js循环判断有无重复值_JavaScript中的while循环
  3. Scala调用Java静态成员及静态方法注意点——只能通过当前类名调用而不能借助子类调用父类静态成员/方法
  4. Day11多态部分-2-1
  5. linux欢迎信息打印本机ip,Linux shell 登录显示欢迎信息或机器信息(示例代码)
  6. c#扩展方法的理解(二:接口)
  7. 让现有的Git分支跟踪一个远程分支?
  8. 说出x的结果,并解释为什么?
  9. 虚拟光驱下载安装和使用,Windows系统如何直接打开iso文件
  10. 服务器系统怎么安装网卡驱动,Windows7系统怎么安装8139网卡驱动
  11. UART协议及其Verilog实现
  12. iOS 解决TableView reloadData时cell中图片会闪的问题
  13. 计算机桌面锁屏设置,怎么设置电脑锁屏
  14. 毕业设计 - 题目:基于机器视觉的图像矫正 (以车牌识别为例) - 图像畸变校正
  15. SuperData上线VR数据平台,做行业发展的“指明灯”
  16. 快递扫地机器人被损坏_熬夜秒到的扫地机器人丢了 快递公司说最多赔几十元...
  17. 小程序----页面样式(WXSS)
  18. pyqt5以及pyqtgraph(pyqt界面设计绘图)
  19. java二进制转为汉字_Java 实现中文与二进制代码互转
  20. ipad pro能用python编程吗_iPad Pro 上还能编程?一点都不稀奇

热门文章

  1. Caffeine缓存快速入门
  2. 360旗下APP再遭苹果下架 巨头频遭“一刀切”
  3. 多维数组VS多维空间
  4. 国家一级计算机等级考试 阴影效果的预设值为内部右上角,全国计算机等级考试一级练习题(1)解析...
  5. 服务器日常巡检 项目,服务器日常巡检表
  6. 【笔记软件obsidian】从入门到精通
  7. 100%都会感染,第一波症状最重,后面会轻。家里一定要备这些东西!
  8. STM32-(08):USART通信基础
  9. 华为ENSP之MPLS初级应用
  10. 区块链技术+二维码,打造爱码物联产品质量溯源软件