夜深了,人静了,该写点儿东西了。这是第一篇博客,写点儿对设计模式的粗浅理解吧。
 
什么是设计模式?
上学那会儿初次听到这个名字一点儿概念都没有,不知道它是用来干嘛的,感觉听上去挺抽象的一个东西。
工作了这么多年以后,我也不去引用那些随处可得的文字了,就凭自己的理解在这里瞎说一通吧,对不对您给个评论,咱们多交流。
 
先说点儿题外话,您经历过应试教育吧,经历过题海战术吧?为什么班上四五十号人,做同样的题,最后考出来的成绩不一样呢?
学霸考分高不见得他们非常聪明,但是学霸基本都有个共同点,他们非常善于总结。对于成千上百道题目,他们不是死记硬背,
而是总结规律,归纳"题型",进而举一反三。
 
上面说到了一个重要词汇,“题型”,所谓“题型”就是很多题目都可以用一个基本的方法来解决。多数人都知道设计模式那本经典名著,
作者是所谓的“四人帮”,这四个人就是程序员里面的学霸,他们经历了无数的项目之后,发现很多项目中会遇到一些类似的问题,
然后他们对这些类似的问题进行反复研究推敲,最终找到了一些理想的解决办法,用这些方法来解决问题的好处是,可以使得软件更容易扩展和维护。
他们将这些解决办法进行了总结,起了一个高大上的名字就叫“设计模式”。其实我觉得叫“惯用法”更好理解,只不过显得不够学术。
 
为什么要学习“设计模式”呢?
我觉得主要有两个作用:
一个作用是实际应用,也就是在具体项目中遇到了类似的问题,直接套题型。当然说的简单,做到难。
实际工作中往往不是一开始就能看出需要用哪种模式的。随着需求的变更,代码会不断的迭代重构,慢慢的你可能发现事情在向你熟悉的某个模式靠近,
这时候就需要考虑一下是不是可以使用这个模式来解决问题。如果确定了能用这个模式解决,就将现有代码按照既有模式进行重构,
相应的类,变量等名字最好也一起重构,让别人一看就知道你是特意按照这个模式来设计的。
要做到这一点的前提当然是,你脑子里面要装着这些模式。
 
另一个作用是便于交流。首先我们说下其他两个类似的东西“数据结构”和“算法”,这两个东西其实也可以认为是总结性的东西,
大师们将常用的数据组织方法归纳出来形成“数据结构”,将常见问题的各种解法总结出来形成“算法”。他们三者还有一个共同点就是,
和具体的编程语言无关。“数据结构”,“算法"和“设计模式”都可以用任意一种编程语言来实现。
当我们学习了这些总结出来的东西之后,大家就能达成一个共识。比如程序员A说“这个问题我们需要用一个队列来实现”,
一个合格程序员的第一反应就是他的意思是先到的数据会被优先处理;因为假程序员B没学过数据结构,他当然就不知道人家在说什么。
同样道理,在进行方案设计讨论的时候,如果程序员A说,这个问题是个典型的“观察者模式”,我们就用这个模式来实现吧;
学过设计模式的程序员一听便知A的意图,同时大脑中已经浮现出了“观察者模式”的UML图是什么样子的;此时假程序员B当然是一脸懵B了。
 
好了,夜深了,就先说到这里,不知道您是否对“什么是设计模式”,“为社么要学习设计模式”是否有了个基本了解。

关于"设计模式“的更多相关文章

  1. MVVM设计模式和WPF中的实现(四)事件绑定

    MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  2. java EE设计模式简介

    1.何为设计模式 设计模式提供了对常见应用设计问题的解决方案.在面向对象的编程中,设计模式通常在解决与对象创建和交互相关的问题,而非整体软件架构所面对的大规模问题,它们以样板代码的形式提供了通用的解决 ...

  3. 计算机程序的思维逻辑 (54) - 剖析Collections - 设计模式

    上节我们提到,类Collections中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了第一类,本节我们介绍第二类. 第二类方法大概可以分为两组: 接受其他 ...

  4. 《JavaScript设计模式 张》整理

    最近在研读另外一本关于设计模式的书<JavaScript设计模式>,这本书中描述了更多的设计模式. 一.创建型设计模式 包括简单工厂.工厂方法.抽象工厂.建造者.原型和单例模式. 1)简单 ...

  5. 《JavaScript设计模式与开发实践》整理

    最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...

  6. 设计模式之行为类模式大PK

                                        行为类模式大PK 行为类模式包括责任链模式.命令模式.解释器模式.迭代器模式.中介者模式.备忘录模式.观察者模式.状态模式.策略 ...

  7. .NET设计模式访问者模式

    一.访问者模式的定义: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 二.访问者模式的结构和角色: 1.Visitor 抽象访问者角色,为该 ...

  8. Java开发中的23种设计模式详解

    [放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...

  9. java 设计模式

    目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计 ...

  10. 设计模式之单例模式(Singleton)

    设计模式之单例模式(Singleton) 设计模式是前辈的一些经验总结之后的精髓,学习设计模式可以针对不同的问题给出更加优雅的解答 单例模式可分为俩种:懒汉模式和饿汉模式.俩种模式分别有不同的优势和缺 ...

随机推荐

  1. C语言开发面试题

    (以下是题主参加的一家偏向Linux平台开发的公司软件岗位笔试题,分享原题,后面附上题主91分的部分参考答案^V^) 一.(8分)请问一下程序输出什么结果? char *getStr(void) { ...

  2. jquery.imagezoom.js制作鼠标悬停图片放大镜特效、参数和最简教程

    一.插件介绍 今天在用到放大镜效果的时候,突然发现网站里没有放大镜的插件.于是总结了一下,放到这里.为自己,也为他人提供方便.jquery.imagezoom.js这款插件用途很简单,就是鼠标移过去, ...

  3. (4)UIView和父子控件

    IButton控件中除了有自身的属性之外还有继承的view的属性 内存地址一样,是同一个view来的,也就是最外层的view.

  4. JavaScript表单

    JavaScript表单 这篇文章的主要目的是介绍表单相关的知识,如表单基础知识.文本框脚本相关用法.选择框脚本相关用法以及等知识.虽然在现代web开发中,很少会使用form默认行为提交表单数据,而是 ...

  5. ETL作业调度工具TASKCTL的两个重大突破

    在传统设计理念下,流程图的可视化.作业流的定义设计功能,随着作业量增加,越来越难用,越来越不适用是一个难以避免的问题.就这两个问题,我给大家分享一下TASKCTL是如何转变思路.如何突破.如何带来一些 ...

  6. 甲方VS乙方

    甲方与乙方,在很多人都存在有误解,不知道究竟如何辨别.这里我提一些简单的辨别方式:甲方一般是指提出目标的一方,在合同拟订过程中主要是提出要实现什么目标,乙方一般是指完成目标,在合同中主要是提出如何保证 ...

  7. PyV8

    待完善 pyv8是个js解析引擎, PyV8 是 V8 引擎的 Python 语言封装,这是 Python 和 JavaScript 对象之间的桥,支持在 Python 脚本中调用 V8 引擎. # ...

  8. 位图索引(Bitmap Index)的故事

    您如果熟悉Oracle数据库,我想您对Thomas Kyte的大名一定不会陌生.Tomas主持的asktom.oracle.com网站享誉Oracle界数十年,绝非幸致.最近在图书馆借到这位Oracl ...

  9. jsp中一些重要的问题

    jsp [1] 简介 > HTML - HTML擅长显示一个静态的网页,但是不能调用Java程序. > Servlet - Servlet擅长调用Java程序和后台进行交互,但是它不擅长显 ...

  10. Selenium发展史

    Jason Huggins在2004年发起了Selenium项目,当时身处ThoughtWorks的他,为了不想让自己的时间浪费在无聊的重复性工作中,幸运的是,所有被测试的浏览器都支持Javascri ...