作者:马靖
联系方式:andamajing@163.com
版权声明:欢迎大家转载,转载请标明出处,尊重原创,从你我做起。
备注:自2014年1月14日起,本人上传的经典书籍,将不再收取资源分,欢迎大家下载学习,好东西一起分享,共同建造良好的网上学习环境。

任何一个软件开发从业者,我想对于软件模式这个词绝对不会陌生,如果你是一个资深的软件开发者,我想对它你可能再熟悉不过了。设计模式是任何一个软件开发者都必须熟练掌握的基本技能。只有熟练掌握它,我们才能写出高质量的,易于维护和扩展的程序。那么设计模式到底是什么呢?为什么软件开发者都需要熟练掌握它呢?

你认为软件开发都需要哪些东西呢?

如果让我来说,软件开发需要C,C++,Java等编程语言,Eclipse,Visual Studio等开发环境,JSP,ASP等开发技术,数据结构,算法,设计模式,还有针对每一个开发方面所需的专业知识和技能。是不是觉得程序员不容易了?的确是这样,我想这要是高校毕业生中做IT行业的学生的平均工资比较高的原因之一吧。编程语言的学习,开发环境的熟悉,开发技术的学习都是相对比较简单的,我想只要从事这一行业都是有这种感觉,而对于想算法,设计模式,数据结构这一类则不是那么那么容易就可以熟练掌握的,我想如果想精通和熟悉他们还是需要经过实践的锤炼的。

说到现在都还没收到正题--什么是设计模式?,下面开始进入正题。

在20世纪90年代,著名的四人组Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides(Gang of Four, 简称GoF),将软件开发过程中的一些好的模式和解决问题的方案进行了总结,并给出常见的几十种模式,这些模式大多就是我们后来看到的23种常见设计模式,当然也有模式是在后来软件发展过程中总结归纳出来的,随着软件行业的不断发展,我想还会有好的设计模式被提出的,我一直坚信。设计模式是人们总结出来的软件开发经验,是对开发经验的高度总结,可以方便的应用于各种不累类型的软件开发问题中,不仅使得软件开发更加简单,而且还能减少软件维护和扩展的成本。试想一下,如果你是更愿意从头到尾去想实际问题的解决方案,还是更愿意拿着别人告诉你的解决方案去解决实际问题呢?也许你是牛人,能够想出更好的办法,但是我想大多数人都做不到,在这个时间就是金钱的年代,还是省下时间降低点开发成本吧,我想你的老板可能更喜欢这样的员工。1995年,GoF收集和整理了23种设计模式汇编成书--《设计模式:可复用面向对象软件的基础》,我想应该每个IT行业从事者基本都会人手一本吧,不管是纸质的还是电子版的。从1995年至今,无论是在大型API或框架(如JDK、.net Framework等),还是轻量级框架,还是应用软件的开发中,设计模式都得到了广泛的应用。如果你正在从事面向对象开发或正准备从事面向对象开发,无论你是使用Java、C#、Objective-C、VB.net、Smalltalk等纯面向对象编程语言还是用C++、PHP、Delphi、JavaScript等可支持面向对象编程的语言,如果你一点设计模式也不懂,我可以毫不夸张的说:你真的out了。

下面给出常用的设计模式,及其它们使用的频率。

表1  常用设计模式一览表

类型

模式名称

学习难度

使用频率

创建型模式

Creational Pattern

单例模式

Singleton Pattern

★☆☆☆☆

★★★★☆

简单工厂模式

Simple Factory Pattern

★★☆☆☆

★★★☆☆

工厂方法模式

Factory Method Pattern

★★☆☆☆

★★★★★

抽象工厂模式

Abstract  Factory Pattern

★★★★☆

★★★★★

原型模式

Prototype Pattern

★★★☆☆

★★★☆☆

建造者模式

Builder Pattern

★★★★☆

★★☆☆☆

结构型模式

Structural Pattern

适配器模式

Adapter Pattern

★★☆☆☆

★★★★☆

桥接模式

Bridge  Pattern

★★★☆☆

★★★☆☆

组合模式

Composite  Pattern

★★★☆☆

★★★★☆

装饰模式

Decorator  Pattern

★★★☆☆

★★★☆☆

外观模式

Façade  Pattern

★☆☆☆☆

★★★★★

享元模式

Flyweight  Pattern

★★★★☆

★☆☆☆☆

代理模式

Proxy  Pattern

★★★☆☆

★★★★☆

行为型模式

Behavioral Pattern

职责链模式

Chain  of Responsibility Pattern

★★★☆☆

★★☆☆☆

命令模式

Command  Pattern

★★★☆☆

★★★★☆

解释器模式

Interpreter  Pattern

★★★★★

★☆☆☆☆

迭代器模式

Iterator  Pattern

★★★☆☆

★★★★★

中介者模式

Mediator  Pattern

★★★☆☆

★★☆☆☆

备忘录模式

Memento  Pattern

★★☆☆☆

★★☆☆☆

观察者模式

Observer  Pattern

★★★☆☆

★★★★★

状态模式

State  Pattern

★★★☆☆

★★★☆☆

策略模式

Strategy  Pattern

★☆☆☆☆

★★★★☆

模板方法模式

Template  Method Pattern

★★☆☆☆

★★★☆☆

访问者模式

Visitor  Pattern

★★★★☆

★☆☆☆☆

是不是觉得好多啊,实际上我们在刚开始学习的时候,不必所有的都去掌握,可以找一些用的比较频繁的,比较简单那的设计模式学习着手。设计模式的学习,我想并不像编程语言的学习那样看两眼就可以使用了,它更多的还是需要我们对它真正理解了,并通过在实际的软件开发过程中使用它们才能加深我们对它们的理解。

设计模式是众多软件开发专家的经验和智慧,这些经验之谈都是从优秀的软件开发中总结出来的,能够为我们提供维护性强扩展性好的解决方案。站在巨人的肩膀上,我想一定可以让你看的更远,做的更好!

最后推荐一本书籍<Head First 设计模式>,对设计模式的解释既幽默风趣,又浅显易懂,个人比较喜欢,好东西大家一同学习。谢谢!

设计模式这扇窗之我见相关推荐

  1. 上帝给你关闭一道门,就会为你打开一扇窗,反推。

    大家都只是道这句话就是善意的谎言,就是一个安慰的话. 怎么证明呢 反推 上帝给你打开一道门,就会为你关闭一扇窗.还有一句自古红颜多薄命,很相似.但是,这些都是小人或者是,普通人想掩盖自己的嫉妒而痛下杀 ...

  2. plsql打开sql窗口快捷键_SQL干货|为你打开一扇窗—窗口函数

    前言 很早之前就想写一篇关于窗口函数的文章,因精力有限所以一直搁置了(一脸认真的自我检讨),在这篇文章的准备阶段,我也拜读了一些相关文章,总体来说基本上所涉及的窗口函数相关知识均有涉及,但一万个读者有 ...

  3. 那一扇窗——倪张根自述创业心路历程

    邂逅记忆绵   2003年4月23日,非典最严重的当口,我从北京参加完一个聚氨酯行业展会回到广东.当晚,同我一起开发海绵行业数控切割机仅4个多月的同学.朋友向我提出散伙,原因只有一个:你太激进,我们累 ...

  4. 被裁员?这是上帝为你开了一扇窗,你知道吗?

    年前年后的裁员潮,想必大家多少都能够感受到互联网的阵阵寒意.面对如此大规模的裁员潮,我们该如何面对?恐慌.愤怒.谴责.斗争到底,还是在庆幸?其实我们心里都明白,无论发生什么,该面对总是要勇敢的去面对. ...

  5. Ebay是扇窗,几度风雨,依旧好风光!

                                                              Ebay是扇窗,几度风雨,依旧好风光                         ...

  6. 一卷书,一支笔,一扇窗,一盏灯

    一卷书,一支笔,一扇窗,一盏灯 作者:红尘有爱 文:红尘有爱 一直喜欢用最惬意的姿态,坐在墙角里,捧一本书,静静地看.其实,看过的书,已不知道有多少,能记住的,却也寥寥无几,有时甚至连书名都想不起,但 ...

  7. 新老台商共话“不平凡的5年”:政策礼包开启“另一扇窗”

    (全面深改这五年)新老台商共话"不平凡的5年":政策礼包开启"另一扇窗" 中新社南京1月18日电 (杨颜慈)临近年关,苏州市台湾同胞投资企业协会会长.广运集团董 ...

  8. 使用设计模式防止破窗理论

    安德鲁·亨特(Andrew Hunt)和戴维·托马斯(David Thomas)在务实的程序员:从旅途到大师,是软件开发中最重要的概念之一. 作者建议,诸如此类的系统受制于称为熵的事物. 熵,作为物理 ...

  9. 打开脑科学研究的另一扇窗:脑神经化学活体原位电化学分析新技术

    来源:brainnews 脑科学是目前国际前沿科技的热点研究领域之一,对脑功能的研究有助于理解人类认知.情感等复杂生理过程的本质,以及神经系统疾病的形成和发展规律.脑神经信号的传递以及代谢过程都离不开 ...

最新文章

  1. Windows - Windows批处理
  2. Python之DataFrame将列作为索引
  3. E - The Imp(博弈/动态规划)
  4. CentOS7下MySQL5.7的安装
  5. CSS:实现文本超出显示省略效果(可指定几行显示)
  6. 德鲁伊 oltp oltp_内存中OLTP系列–表创建和类型
  7. java9模块不可见问题
  8. hal 外部唤醒脚唤醒_探索者 STM32F407 开发板资料连载第二十二章 待机唤醒实验...
  9. 2018中原工学院网络安全校赛
  10. 计算机网络共享文件密码,如何给局域网共享文件夹设置访问密码
  11. java人员的宝贝:百宝箱。
  12. 我的疫情时代——记在家的那个学期
  13. 景联文科技入选全国信息技术标准化技术委员会生物特征识别技术委员会
  14. on1 photo raw 2020中文版(RAW图像处理) v14.5.1.9231绿色便携版
  15. [新星计划] Python环境搭建 | 万丈高楼平地起
  16. python编程心得体会800字_Python学习心得体会
  17. 数据分析之非参数检验与二元逻辑回归结果不一致的原因
  18. 关于ERP、PLM、APS、MES的数据集成
  19. python切面异常处理_node端统一错误处理
  20. 【dotnetfx】Microsoft .NET Framework 3.5 sp1离线安装解决方案

热门文章

  1. vuejs项目前端纯js在线下载网页内容保存为自定义格式的word文件、另存为word文件
  2. excel多个sheet转换成html,excel怎么把几个sheet汇总成一个表
  3. warframe怒焚者结合目标_warframe大黄脸扫描器简介 星际战甲结合扫描器效果一览...
  4. 字节跳动-2020秋招-笔试题剖析【5道算法题】
  5. 移动端实现swiper轮播的图片视频播放video,仿淘宝商品详情的视频播放(兼容ios和android)
  6. 【Excel2019(十四):日期函数】【认识时间和日期+日期函数+计算日期间隔+星期计算】
  7. verilator常用基础知识
  8. 岁月的剪影【十月再不动就发霉了】
  9. 目标检测学习笔记——yolov5的坐标输出形式和损失函数计算
  10. JavaScript - 手写实现ajax 以及 ajax封装