【设计模式】设计模式概览
来源:互联网 发布:土地数据可以从哪里找 编辑:程序博客网 时间:2024/06/08 09:31
前言
随着面向对象技术的发展,我们可以很轻松的开发出更加优秀的软件,而优秀的软件是我们的工作和生活更加的便捷和舒适的因素之一,因此可容易的推导出面向对象技术让我们的生活变得更美好的结论,它变得很重要。为了使我们更好的利用这个重要面向对象技术来方便我们的软件开发,当然,更是为了美好我们的生活。聪明的人类又发明了一些神奇的方法,我们都叫它为设计模式,下面写了有关设计模式的基本知识,如有错误,敬请指正。
设计模式的发展
在软件领域,GOF(四人帮,又称Gang of Four,即Erich Gamma、Richard Helm /Ralph Johnson 和 John Vlissides)首次系统地提出了三大类模式:创建模式,行为模式,组合模式,共23种经典的可以解决常见软件设计问题的可复用设计方案,为可复用软件设计奠定了一定的理论基础。第一次将设计模式提升到理论高度,并将之规范化。他们写了一本叫《设计模式》的书,原名《Design Patterns:Elements of ReusableObject-Oriented Software》,于1995年出版。时至今日,在可复用面向对象软件的发展过程中,新的设计模式仍然不断的出现。但这23种模式被公认为所有其他设计模式的基础。其实,当自己真正熟练一些后,你会发现它究竟有多少种并不重要,因为万变不离其宗,你可以说它有100种,也可以说只有一两种,其实,你只需要把一把新手剑和一件布衫,利用自己熟练的技法与走位,就足够打败无数对手了。
设计模式是什么
模式,顾名思义,具有某种重复性规律的方案。设计模式(Design pattern),就是一套设计过程中可以反复使用于解决特定问题的、多数人知晓的、经过分类编目的代码设计经验的总结。说白了,设计模式就是程序员前辈们在实践中总结出来的解决各种特定问题的模板、方法和技巧,只是为了编写出更好的面向对象程序的一种方法。如果说数学是思维的体操,那么设计模式是面向对象编程思维的体操,它的本质是面向对象方法的运用。
设计模式的内容和原则
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:设配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
设计模式中提到的原则:单一职责原则;里氏代换原则;接口隔离原则;合成/聚合复用;开放封闭原则;依赖倒转原则;迪米特法则。设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。
设计模式的作用
使用设计模式是为了让代码具有可重用性,更容易被他人理解和保证代码的可靠性。毫无疑问,设计模式于他人于系统都是多赢的,使代码编制真正工程化,软件工程的基石脉络,如同大厦的结构一样。通过这些模式让你找到“封装变化”,“对象间松散耦合”,“针对接口编程”的感觉,从而设计出易维护、易扩展、易复用、灵活性好的程序。设计模式使人们可以更加简单方便地复用成功的设计和体系结构,同时也方便了新的系统开发者理解其设计思路。
设计模式的正确看待姿势
学习设计模式关键是要理解,理解方法,理解思想和观念,然后忘记它们。跟习武所崇尚的无招胜有招一样,敲代码达到最高境界后,只要记住一句内功心法:高内聚,低耦合。举例:张三丰在传授张无忌太极剑法的时候,张无忌说都忘了,却发挥出了最高的威力。其实,张三丰主要传的乃是“剑意”,而非“剑招”,要将所见到的剑招忘的半点不剩,才能得其精髓,临敌时才能以意驭剑,使剑招千变万化,无穷无尽,倘若尚有一招剑法忘不干净,心有拘束,剑法便不能纯。张三丰是在百岁之后创出“太极拳”和太极剑,当时张三丰心中已领悟到武学的最高境界——无滞无式,习武的最高境界不在招式上,称之为“无式境”;心无杂念,称之为“无滞境”。所以张无忌在学习张三丰的太极剑时说忘了,但却用的出来。
话说回来,在我们实际工作中,思维就是太极剑,你在代码中灵活运用设计模式所带来的回报远大于套用工具和对方法生搬硬套(那些招式)。设计模式是一种解决问题的思维,而并非某种特定的方法。方法更容易让人走进一种“刻意效仿”的怪圈,进一步变成定向思维,没办法举一反三,而解决问题的思维,这是完全属于你自己的,由你的内心产生的思维方式,最终达到兵来将挡,水来土掩的境界。
比如某些同学经常在乎说:某某模式怎么某个参数或者某个方法为什么一定要那样,如果我变动一下,是不是就是错了?是不是我在生产开发中,一定要按照某个模式一五一十来做,它有几个参数,有几个方法,我必须一个都不能落下,否则就“不正统”了,就不是设计模式了。千万不要在这种问题上纠结,你是否“用到了”一个设计模式,不在于你是否写出了“长得像”的代码格式,而是在于你是否用了他的理念来完成它的目的,比如是否达到了和他一样的不错的扩展性,良好的可阅读性,高内聚低耦合的原则是否达到等等,只要达到了,那就用对了。
结语
设计模式,其实就是对封装、多态、继承和关联的反复使用,是对他们巧妙排列组合的编程技巧。要想真正的了解设计模式,就要透彻的理解OO的三大特性:封装、继承和多态。其中,封装很重要,比如说数据可以封装,函数可以封装,对象可以封装,硬件可以封装,连人的思想都可以封装,封装简直无处不在。另外,有点UML基础也是很必要的。说到最后,我相信设计模式一定会在以后的软件开发中带给我们意想不到的便捷,慢慢学习,慢慢体会。
- 【设计模式】设计模式概览
- 设计模式概览
- MVC设计模式概览
- 设计模式概览
- 设计模式概览
- 常用设计模式概览
- 设计模式概览
- 设计模式概览
- 设计模式概览
- 设计模式概览
- GoF设计模式概览
- 设计模式概览
- 设计模式概览
- 设计模式概览
- 02@设计模式概览
- 设计模式概览
- 常用设计模式概览
- 【设计模式】概览
- maven -- 配置
- poj1050 最大子矩阵和
- 硬件改版引起的I2C异常
- Linux系统搭建JDK环境
- 缺少动态连接库.so--cannot open shared object file: No such file or directory
- 【设计模式】设计模式概览
- 此博客内博文均转自我个人的博客网站!
- 关于串口复用造成的意外及总结
- Qt4.8.5+VS2010+Addin配置
- dads
- Java基础之二:Java语法基础
- Java学习笔记(一)
- 5-19 支票面额 (15分)C语言
- Hadoop伪分布式环境搭建