设计模式概述

 
什么是设计模式?通常会有以下几个定义:
设计模式描述了软件设计过程中某一类常见问题的一般性解决方案。
面向对象设计模式描述了面向对象设计过程中,特定场景下,类与相互通信的对象之间常见的组织关系。
每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次的使用该方案而不必重复劳动。
说到设计模式,首先必须提到的就是 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
 
 

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