Design Patterns Overview

原创 2016年05月30日 14:11:42

Design Patterns Overview

目录


什么是GoF?

提到设计模式,就不得不提到GoF。
1994年,Erich Gamma, Richard Helm, Ralph Johnson 和 John Vlissides
出版了一本名叫Design Patterns - Elements of Reusable Object-Oriented Software 的书,而这恐怕也是设计模式这个词的起源了。
四位牛哄哄的大侠从此有了响当当的名号——GoF(Gang of Four,四人帮!)

根据四位大神的大作,设计模式基本上基于以下OOD的原则:

  • 面向接口编程而不是面向实现编程
  • 优先使用组合而不是继承

用途

在软件开发中,设计模式主要用于以下两方面:

  • 开发者之间的交流

    设计模式提供了一些通用的术语,并且每种模式都适用于特定的场景。这样开发者交流起来就方便多了。比如一个人说我的代码用了单例模式,那么其他人不用追究细节就知道他是怎么实现的了(我觉得这个是最重要的)。

  • 最佳实践

    设计模式已经被证明在软件开发过程中能够为一些问题提供最好的解决方案。并且学习设计模式会让经验不足的开发者简单快速的了解软件设计。


划分依据

参考Design Patterns - Elements of Reusable Object-Oriented Software,设计模式可以分为23种,共3大类。

Creational, Structural and Behavioral patterns。

当然还有其他的分类。

J2EE design patterns

  • Creational Patterns

    划分依据:创建对象

    这类模式关注的是对象的创建,并且在创建对象的同时隐藏创建的逻辑,而不是直接使用new操作符。这样对象的创建就更加灵活了,可以根据给定的场景来创建合适的对象。

  • Structural Patterns

    划分依据:类和对象的组合

    这类模式关注的是类和对象的组合。通过不同的组合带来更多功能上的变化。

  • Behavioral Patterns

    划分依据:对象之间的交互

    这类模式关注的是对象与对象之间的交互(communication)。

  • J2EE Patterns

    划分依据:用于Java EE


具体分类1

CreationalPatterns Description
Abstract Factory Sets of methods to make various objects.
Builder Make and return one object various ways.
Factory Methods to make and return components of one object various ways.
Prototype Make new objects by cloning the objects which you set as prototypes.
Singleton A class distributes the only instance of itself.

StructuralPatterns Description
Adapter A class extends another class, takes in an object, and makes the taken object behave like the extended class.
Bridge An abstraction and implementation are in different class hierarchies.
Composite Assemble groups of objects with the same signature.
Decorator One class takes in another class, both of which extend the same abstract class, and adds functionality.
Facade One class has a method that performs a complex process calling several other classes.
Flyweight The reusable and variable parts of a class are broken into two classes to save resources.
Proxy One class controls the creation of and access to objects in another class.

BehavioralPatterns Description
Chain of Resp. A method called in one class can move up a hierarchy to find an object that can properly execute the method.
Command An object encapsulates everything needed to execute a method in another object.
Interpreter Define a macro language and syntax, parsing input into objects which perform the correct opertaions.
Iterator One object can traverse the elements of another object.
Mediator An object distributes communication between two or more objects.
Memento One object stores another objects state.
Observer An object notifies other object(s) if it changes.
State An object appears to change its` class when the class it passes calls through to switches itself for a related class.
Strategy An object controls which of a family of methods is called. Each method is in its` own class that extends a common base class.
Template An abstract class defines various methods, and has one non-overridden method which calls the various methods.
Visitor One or more related classes have the same method, which calls a method specific for themselves in another class.

Summary

关于设计模式的描述最好还是看英文文档,中文的很多说明都不是很清楚或者说不是很准确,因为中文讲究的是意会,并不是很注重语法和精确性。而设计模式中有些模式之间的差别真的需要仔细甄别才能够体会出来,所以还是建议看英文文档。

版权声明:本文为博主原创文章,未经博主允许不得转载。

MapReduce Design Patterns(2. 最大值、最小值、总数、个数、均值)(二)

http://blog.csdn.net/cuirong1986/article/details/8451336 CHAPTER 2 .Summarization Patterns 随着每...

MapReduce Design Patterns(4. 分层,分区)(七)

http://blog.csdn.net/cuirong1986/article/details/8476368 Chapter 4. Data Organization Patterns ...

设计模式(Design Patterns)

设计模式(Design Patterns)                                   ——可复用面向对象软件的基础 设计模式(Design pattern)是一套...

设计模式(Design Patterns)导论

设计模式(Design Patterns)                                   ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使...
  • mixiu888
  • mixiu888
  • 2017年12月12日 08:02
  • 61377

设计模式(Design Patterns)-可复用面向对象软件的基础 01:简介(Abstract)

一、概述 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问...

设计模式(Design Patterns)

——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保...

设计模式(Design Patterns)

一、设计模式的六大原则1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概...

Java Design Patterns Abstract Factory

Abstract Factory OverviewAn abstract factory has sets of methods to make families of various objects...

设计模式-Design Patterns

今天开始读设计模式-可复用面向对象软件的基础(Design Patterns-elements of reusable Object-Oriented Software) 这本书第一次的提出设计模式...

java设计模式(Design Patterns)

设计模式(Design Patterns)                                   ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Design Patterns Overview
举报原因:
原因补充:

(最多只允许输入30个字)