设计模式概述

来源:互联网 发布:kubectl设置集群端口 编辑:程序博客网 时间:2024/03/29 09:30
 
什么是设计模式?通常会有以下几个定义:
设计模式描述了软件设计过程中某一类常见问题的一般性解决方案。
面向对象设计模式描述了面向对象设计过程中,特定场景下,类与相互通信的对象之间常见的组织关系。
每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次的使用该方案而不必重复劳动。
说到设计模式,首先必须提到的就是GoF1994年,Erich Gamma, Richard Helm, Ralph JohnsonJohn 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. CooperIntroduction 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 PatternNew
   
中介者模式(Mediator Pattern
   
备忘录模式(Memento Pattern
   
解释器模式(Interpreter Pattern
   
状态模式(State Pattern
   
策略模式(Strategy Pattern
   
职责链模式(Chain of Responsibility
   
访问者模式(Visitor Pattern