【设计模式】从菜鸟到大鸟之23个模式整体观
2015-09-17 14:10
211 查看
一、前排感受
用了三个星期的时间终于拜读完了《大话设计模式》。
其中书读了三遍,第一遍快速阅读,丛中获得了一个整体的大框架;第二遍仔细阅读,讲书中的所有的例子都动手操作了,不但熟悉运用了C#,更深刻的锻炼了面向对象的意识;第三遍整体对比看书,把相似的模式都进行对比学习。
学习《设计模式》有几种境界,第一种是学习了一两个设计模式,就一直想用到自己的代码中去;第二种是学完全部设计模式,觉得很多模式都很相似,分不清楚它们之间有什么区别;第三种是灵活运用设计模式,就算不用具体哪种模式也可以设计也高质量的代码,无剑胜有剑。
我觉得我现在就是第二个境界,觉得她们长得太像了,自已熟练的运用还需要很长时间的锻炼,这一方面,就感觉小菜很厉害啊,大鸟轻轻的点拨一下就可以将代码写出来。我目前可没有这种本事。不过,迟早会有的!
二、如何学习?
是什么?
小时候最喜欢看《射雕英雄传》,里面的郭靖通过学习《九阴真经》、《降龙十八掌掌法精义》、《武穆遗书》等武林秘籍,最终成为了武林盟主。而这基本武林秘籍也是每一个武林中人都梦寐以求的。《设计模式》就是我们编程的武林秘籍。将这些模式和原则熟练的运用到编程中,可以让我们编写的软件更上一层楼!
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性
怎么学?
整体结构
下面通过对整体的宏观概况,让我们对设计模式更加的熟悉:这么多的武林招式我们怎么才能记住?怎么才能熟练的运用呢?下表引用自刘伟老师的博客,在这张表中很清晰的展示了所有的设计模式的学习难度和使用频率:
常用设计模式一览表
类型 | 模式名称 | 学习难度 | 使用频率 |
创建型模式 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 | ★★★★☆ | ★☆☆☆☆ |
记是记不住
通过这个表,我们就可以很轻松的了解,有哪些模式。但是这么多模式记是记不住的,更重要的是我们要熟练的应用。
编织知识网
把旧知识和《设计模式》对比学习,拉近我们学习过程中的陌生感。
比如,在《设计模式》中,每一个设计模式都会有一张对应的类图,这就可以让我们亲自动手去画一画,然后实现代码。看看用软件生成的代码和书本上的一样吗。
亲自动手
设计模式有很多个,书本里的例子就更多的数不过来。有地时候只有亲自动手实践才能更好的学会如何操作。
利用互联网
我基本是一天一个模式,每天都会在最后自己进行反思。更好的方式是利用互联网:每学完一个模式,自己动手查一查,看看网上有没有大神和我的思想一样。经过碰撞,会让我对设计模式的理解更加深刻。
三、改变思想
面向过程→面向对象
《大话设计模式》中的例子是用C#完成的,而C#是完全面对对象的,这就需要我们能跟在心里添加面向对象的思想,面向对象以可复用、可维护的特点玩败面向过程。遇到简单的问题,我们都要从心里用面向对象的思想去思考一下。
四、小结
《设计模式》真是一个大宝库啊!每一个模式都是精髓!都值得我们品味!会通过以后的不断实践来熟练技术,提升思想。另外向大家推荐一位大神:刘伟老师。
相关文章推荐
- 解决MysSql数据库添加数据乱码问题
- JNI 常用API
- 关于引用及取地址&运算符的用法
- HDU 4291 A Short problem
- 我的Android进阶之旅------>Android使用百度地图时,关于android.permission.BAIDU_LOCATION_SERVICE的声明警告。
- Spring AOP + AspectJ annotation example
- VB截取中英文混合字符串中若干半角单位长字串的函数
- json格式化工具
- QT中监控全局键盘鼠标事件
- Java中的StringUtils类
- 浅谈数据结构-插入排序(直接插入、希尔排序)
- 如何检测 JavaScript 中的自定义全局变量
- 有效减少虚拟机镜像文件的大小
- Win10提示“计算机内存不足”的怎么办 解决办法介绍
- test3.10
- 11.2.04 Oracle RAC 目录中 crfclust.bdb文件过大,Bug 20186278
- android代码获取网站图标
- 移除父控件的所有子控件
- activiti数据库表结构剖析
- Android 三次贝塞尔曲线练习之弹性的圆