大话设计模式—何为设计模式

设计模式,说起设计模式,设计模式,总是给人留下一种高屋建瓴,金碧辉煌的感觉。甚至很多人以在一款软件里使用了多少设计模式来衡量软件代码的质量。所以设计模式对于我们这些软件开发人员来说,实在再熟悉不过了。自从一本由四人组合写的奇书横空出世以后,设计模式在软件开发中就火了起来,很多程序员甚至把那本书奉为圣经。虽然我们怎么熟悉它,那我们是否真的完全理解或者掌握了它的精髓了呢?

无论学习什么知识我们首先从三问,或者五问问起(所有知识学习都逃不出这几问)。第一问,是什么?首先我们来看看这个设计模式到底是什么呢?设计模式,模式,首先我们顾名思义,它肯定是一种模式。所以我们在谈设计模式之前,我们先来看看什么是个模式。模式,这个概念对于我们来说也并不陌生。在我们的生活中,也到处都是。

网上的定义:模式是指从生产经验和生活经验中经过抽象和升华提炼出来的核心知识体系。模式(Pattern)其实就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到解决问题的最佳办法。

维基百科的定义:模式(英语:Pattern,源自法语:patron),在物体或事件上,产生的一种规律变化与自我重复的样式与过程。

模式就是一种人们在解决问题的过程中,对同一类型重复出现的问题的各种解决之法的总结归纳,最终抽象提炼出的一种为了今后能够更高效更好的去解决同类问题的方法理论。其实,模式,就是一种固定的能够比较好的解决问题的方法理论。再简单说,模式就是一种解决问题的方式,风格。比如,我们生活中的常提到的商业模式,企业运营模式,还有我们经常剖析的思维模式。说到思维模式,我们伟大的米老师的思维模式就最经典,是我们所有人都要学习的哈。我们经常画思维导图,我们画的每一张导图,其实就是我们一种思维模式的反应。我们经常说的思维定式就是一种特殊的思维模式。每当人们提到思维定式,总认为思维定式仅仅是一种思想的禁锢。其实不然,思维定式是一把双刃剑,对我们其实也有很大的好处,我们平时的生活是离不开思维定式的。比如:1+1=2?1+1不一定等于2!但是在我们的生活中多数情况下1+1就等于2,所以我们慢慢的就形成了1+1等于2的思维定式。并且这个思维定式帮了我们很大的忙,它是我们做复杂计算的基础。如果我们没有这个思维定式,那我们做计算时那就费劲多了,我们还得去想1+1真的等于2?什么时候才等于2呢?这样我们就太浪费时间,浪费生命了,想的太多了!而有了思维定式,我们就可以脱口而出,想都不用想。所以,思维定式并不是我们想象的那么万恶,其实它给我们带来的好处还是很多的,尤其是在提高效率上面。关于思维定式的具体论述,请见我的博客《学习触发器谈思维定式 

说到模式,生活中处处都是模式。比如文章有文章的模式。如新闻有新闻的模式,第一段总是话简述了整个新闻,诗歌总是抒情的,论文总是死板的,讲稿总是高谈的,漫画总是幽默的,……  新闻联播的模式是:头 10分钟领导很忙,中间 10 分钟人民很幸福,后 10 分钟国外很乱。中国政府官方宣传稿也模式也很明显,各种赞美,口号,胜利,总是要坚持个什么,团结个什么,迈向个什么,某某精神,某某思想,群众情绪稳定,不明真相,等等……

这就是 Pattern,只要你细心观察,你会发现这世间处处都是 Pattern。

关于模式就说到这里,现在回到我们的设计模式。大家明白了模式,现在再来看设计模式,就很容易明白了。设计模式,只是加了2字“设计”而已。模式,是一种固定的能够比较好的解决问题的方法理论。所以设计模式,自然就是软件开发中一种固定的能够比较好的解决某一类问题的设计方法。设计模式的英文是 Design Pattern,模式是
Pattern 的汉译。所谓 Pattern 就是一种规则,或是一种模型,或是一种习惯。

孙悟空从石头缝里蹦出来,《西游记》还介绍了这个石头的来历呢。那么我们的设计模式的介绍,当然也不例外了。说完了是什么,我们再来看看为什么这个问题。为什么会有设计模式呢?设计模式是怎么产生的呢?下面我们来具体看看。

设计模式,这个概念首先是由一本奇书中产生的,然后就火起来的。这本书就叫《设计模式》,原名《Design Patterns: Elements of Reusable Object-Oriented Software》(1995年出版,出版社:AddisonWesly Longman.Inc),而写这本书的人是GoF(“四人帮”,又称Gang of Four,即Erich Gamma、Richard Helm、Ralph Johnson和John
Vlissides四人)。他们在这本书里第一次将设计模式提升到理论高度,并将之规范化。该书提出了23种基本设计模式。时至今日,在可复用面向对象软件的发展过程中,新的设计模式仍然不断出现。所谓的设计模式,我们日常工作中经常用,只是我们没有像GoF一样想过,把这些日常用到的模式总结归纳,形成结构化的理论。可见,设计模式不真正是GoF提出的概念,而是他们作为一个有心人,把人们日常工作中遇到的设计问题,全面的总结,才形成了之后的“23种设计模式”。所以设计模式这个东西,原本就存在,只是我们缺少一双发现美的眼睛。

《设计模式》这本书中,GoF 这四个人总结了 23 个经典的面向对象的设计模式,某中有 5 个创建模式,7 个结构模式,11 个行为模式。很多人都会觉得这是面向对象的设计模式,很多人也觉得非面向对象不能用这些模式。其实不然,我觉得这是一种教条主义。我们说的那23种设计模式,只是GOf用面向对象实现的罢了。就像我上面说过的那些生活中的 Pattern 一样,只要你仔细思考,你会发现这 23 个设计模式在我们的生活和社会中也能有他们的身影。比如:那个活字印刷,简单工厂;代理模式,追女孩的那个例子,采用了代理模式,结果为别人做了嫁衣;观察者模式,观察老板是否回来了?命令模式,考羊肉串。

设计模式,设计模式,重在设计(当然了下面说的所有的设计模式都是指我们的面向对象开发的设计模式。设计所要解决的主要问题,是如何高效率、高质量、低风险的应对各种各类变化,例如需求变更、软件升级等。所以设计模式的基础还是我们的面向对象。设计的方式主要是提取抽象、隔离变化。遵循一定的设计原则,这里有先人们总结出的七大原则。

1.      单一职责

2.      里氏替换

3.      迪米特法则

4.      依赖倒转

5.      接口隔离

6.      开放-封闭

7.      合成/聚合复用原则

关于这七大原则的详细讲解,请关注我的后续博客。

其实编程是一种文化,在软件这个行业慢慢的,不断的沉淀,形成了一种特有的新生的文化,就像我们一个名族的文化,几千年积累下来的,根深蒂固的,影响更深远。设计模式,在这里其实就是一种思想,一种哲学。

大话设计模式—何为设计模式

时间: 2024-10-15 05:01:14

大话设计模式—何为设计模式的相关文章

大话设计模式1:初识设计模式及设计模式五大基本原则

一什么是设计模式? 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计 模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多 赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 二为什么要使用设计模式? 为什么要提倡Design Pattern呢?根本原因是为了代码复用,增加可维护性.那么怎么才能实现代码复用呢?面 向对象有几个原则:单一职责原

Java软件设计模式------装饰设计模式

Java软件设计模式一共分为23种; 一般常用的有: 单例设计模式 装饰设计模式 工厂设计模式 装饰设计模式 定义:英文叫Decorator Pattern,又叫装饰者模式.装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 在生活中我们用程序员和项目经理的例子来比喻,项目经理是从程序员开始的,经过不断地积累工作经验.不断的学习新的知识,才有可能升职. 在装饰设计模式中项目经理就是程序员的增强. 程序猿: 写程序 项目

[设计模式] .NET设计模式笔记 - 了解设计模式

今天在TerryLee的cnblog(http://terrylee.cnblogs.com)里看到了与设计模式相关的整套文章,初学设计模式看完每篇文章后做些笔记和摘抄. ●什么是设计模式,什么是架构? 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的

JAVA设计模式-装饰设计模式-继承体系的由来和装饰类的优化

首先看一下我们设计类的过程: 专门用于读取数据的类 MyReader l--MyTextReader:根据不同的功能会不断延伸很多子类 l--MyMeidaReader l--MyDataReader l--.......... 为了提高以上子类的工作效率,需要加入缓冲区技术.所以又会出现下面的类的继承体系. (体系1) MyReader l--MyTextReader:根据不同的功能会不断延伸很多子类 l--MyBufferedTextReader l--MyMeidaReader l--My

[设计模式] .NET设计模式笔记 - 有多少种设计模式

.NET下的23中设计模式. ※创建型模式篇 ●单件模式(Single Pattern) ●抽象工厂模式(Abstract Factory) ●建造者模式(Builder Pattern) ●工厂方法(Factory Method) ●原型模式(Protype Pattern) ※结构型模式篇 ●适配器模式(Adapter Pattern) ●桥接模式(Bridge Pattern) ●装饰模式(Decorator Pattern) ●组合模式(Composite Pattern) ●外观模式(

设计模式(35)-----设计模式阶段性总结(一句话概括一个模式)

目录: 设计模式(1)------初始设计模式(回调函数) 设计模式要从语义上出发,而不要从语法上出发,其实设计模式归根结底就是多态的有计划的组合. 设计模式(2)------行为型模式------观察者设计模式 想想气象站,根据天气的变化动态的通知观众实时天气.当一个对象的状态改变时,通知另一个对象作出相应的改变,而中间的观察和通知者就是主要的观察者设计模式.出版者+订阅者=观察者模式 设计模式(3)------行为型模式------观察者设计模式(jdk自带) 设计模式(4)------结构

结构型设计模式对比 设计模式(十六)

结构型设计模式 结构型模式关注于整体最终的结构,通过继承和组合,构建出更加复杂的结构 进而提供更加强大的逻辑功能 七种结构型模式 适配器模式(Adapter Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 代理模式(Proxy Pattern) 桥接模式(Bridge Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 所有的结构型设计模式在逻辑上都各自不同程度的隐含了“间

图解Java设计模式之设计模式面试题

图解Java设计模式之设计模式面试题 1.1 Java设计模式内容介绍 1.1.1 先看几个经典的面试题 1.1.2 设计模式的重要性 1.1 Java设计模式内容介绍 1.1.1 先看几个经典的面试题 原型设计模式问题 :1)有请使用UML类图画出原型模式核心角色2)原型设计模式的深拷贝和浅拷贝是什么.并写出深拷贝的两种方式的源码(重写clone方法实现深拷贝.使用序列化来实现深拷贝)3)在Spring框架中哪里使用到原型模式,并对源码进行分析beans.xml <bean id="id

图解Java设计模式之设计模式七大原则

图解Java设计模式之设计模式七大原则 2.1 设计模式的目的 2.2 设计模式七大原则 2.3 单一职责原则 2.3.1 基本介绍 2.3.2 应用实例 2.4 接口隔离原则(Interface Segregation Principle) 2.4.1 基本介绍 2.4.2 应用实例 2.5 依赖倒转原则 2.5.1 基本介绍 2.5.2 应用实例 2.6 里氏替换原则 2.6.1 OO中的继承性的思考和说明 2.6.2 基本介绍 2.6.3 一个程序引出的问题和思考 2.6.4 解决方法 2