设计模式概述

什么是设计模式?通常会有以下几个定义:

设计模式描述了软件设计过程中某一类常见问题的一般性解决方案。

面向对象设计模式描述了面向对象设计过程中,特定场景下,类与相互通信的对象之间常见的组织关系。

每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次的使用该方案而不必重复劳动。

说到设计模式,首先必须提到的就是GoF,1994年,Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides(合称Gang of Four, GoF)合作出版了一本书《Design Patterns: Elements of Reusable Object-Oriented Software》。这本书首次把设计模式提升到了一个理论的高度。后面陆续又有大师出版了一系列谈论设计模式的书,使用不同语言、从不同角度对设计模式进行了进一步的阐述。其中,影响比较大的还有Robert C. Martin的《Agile Software Development: Principles Patterns and Practices》和James W. Cooper的Introduction to Desgin Patterns in C#》。也许,还可以加上一本最新的《Head First DesignPatterns》。

我曾经听到项目组的同事抱怨前面提到的书太晦涩了,迁怒于翻译的水平,说除了代码之外,基本上不知所云。国内翻译的IT教材,确实有很多翻译的不知所云,但是关于设计模式,却显然不是这样。在我看来,设计模式不是可以“学习”的。它不是一种语法,而更是一些思想,一些经验总结。试想,总结出这些模式的那些大师,是做了无数的项目慢慢积累,才浓缩出这些精华。要真的理解这些精华,也必须有一定的经验积累才行。一个只了解一两种OO语言语法的程序员,是没法真正理解设计模式的。不过,刚开始OO,也不是不可以看看设计模式。也许一时半刻还不能理解,更不会应用到实际项目中去,不过,能在头脑里有些概念,在遇到这些设计模式所提到的问题的场景时,能想起来翻翻书,就很不错了。

GoF提到了23种设计模式,而在Cooper的书中,又加入了一种最简单的创建型模式简单工厂Simple Factory,可以看作是工厂模式的简化。不管是23种还是24种,大家的分类方法都是一致的,都根据设计模式应用的场景,分为三大类:

1. 创建型模式
与类的创建有关的模式,讨论的是如何创建对象不是直接实例化对象,这会使程序在判断给定情况下创建哪一个对象。这样的模式包括:
     单件模式(Single Pattern)
     抽象工厂模式(Abstract Factory)
     建造者模式(Builder Pattern)
    工厂方法(Factory Method)
    简单工厂模式(Simple Factory)
    原型模式(Protype Pattern)
2. 结构型模式
处理类和对象的组合。结构型模式可以将一组对象组合成更大的结构,例如复杂的用户界面或报表数据。这些模式包括:
    适配器模式(Adapter Pattern)
    桥接模式(Bridge Pattern)
    装饰模式(Decorator Pattern)
    组合模式(Composite Pattern)
    外观模式(Façade Pattern)
    享元模式(Flyweight Pattern)
    代理模式(Proxy Pattern)
3.行为型模式
对类和对象怎样交互和分配职责进行描述。行为型模式定义系统内对象间的通信,以及复杂程序中的流程控制。这些模式包括:
    模版方法模式(Template Method)
    命令模式(Command Pattern)
    迭代器模式(Iterator Pattern)
    观察者模式(Oberver Pattern)New!
    中介者模式(Mediator Pattern)
    备忘录模式(Memento Pattern)
    解释器模式(Interpreter Pattern)
    状态模式(State Pattern)
    策略模式(Strategy Pattern)
    职责链模式(Chain of Responsibility)
    访问者模式(Visitor Pattern)

我力图完成这些模式的记录,这个工程可不小。我的记录主要以例子为主,包括代码和类图。也适当摘抄一些上面提到的前辈的文字描述。这样整理下来,我也就又有提高了^_^

你可能感兴趣的:(设计模式概述)