设计模式这扇窗之我见

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

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

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

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

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

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

相关推荐
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页