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

    Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missin ...

  2. 21. leetcode 492

    492: 给定一个面积值,求它的长l和宽w.长和宽需满足:长大于等于宽,长和宽的差值尽可能小,长乘宽等于面积. 思路:先将l和w初始化为sqrt(area),然后看l*w是否等于面积,如果等于则返回l ...

  3. swift 导出测试包(Save for Ad Hoc Deployment)卡在compile bitcode处问题

    如图取消Rebuild from bitcode选中速度会快很多

  4. 模拟生产搭建Standby RAC实验环境(11.2.0.4 DG)

    模拟生产搭建Standby RAC实验环境(11.2.0.4 DG) 环境:RHEL 6.5 + Oracle 11.2.0.4 GI.DB 1.需求背景介绍 2.准备工作 3.主库配置 4.备库配置 ...

  5. PAT (Basic Level) Practise (中文)-1021. 个位数统计 (15)

    1021. 个位数统计 (15) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一个k位整数N = dk-1 ...

  6. 【FAQ系列】:DB服务器产生大量物理读问题优化思路

    一 [现象] 1.7点到9点IO监控指标util特别高,如下: 2 .查看读写情况:读产生很高的物理IO,如下 [分析]:对比其他服务器,buffer pool都是80G,正常情况下热点数据都是从bu ...

  7. oracle 内连接,外连接

    --内连接  inner join  ...  on  --左外连接 left join ... on  --右外连接  right join ... on 列: select * from stud ...

  8. python基础===filter在python3中的用法

    l = range(0,20) def f(x): if x%2 == 0: return True print(list(filter(f,l))) #和python2的区别在于,要加一个list

  9. 设计模式(3)--FactoryMethod( [2] 工厂方法模式)--创建型

    1.模式定义: 工厂方法是针对每一种产品提供一个工厂类.通过不同的工厂实例来创建不同的产品实例. 2.模式特点: (1)工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承. (2 ...

  10. JDBC在springMvc等框架中使用的方式

    连接池jar:c3p0 代码结构 ----------------------------------------------- 配置文件  config.properties #hibernate. ...