码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式概述

时间:2015-10-29 16:06:26      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:

  目前为止,设计模式现在共有23种(mvc不是设计模式!!!至于为什么?参看另一篇《MVC为什么不是设计模式》)

  根据设计模式的目的,分为三种,分别为:创建、结构、行为

  创建

      设计模式                    可变方面

  1.Abstract Factory                               产品对象家族

  2.Builder                      如何创建一个组合对象

  3.Factory Method                   被实例化的子类

  4.Prototype                      被实例化的类

  5.Singleton                      一个类的唯一实例

==============================================================================================================================

  结构

  1.Adapter                       对象的接口

  2.Bridge                        对象的实现

  3.Composite                    一个对象的结构和组成

  4.Decorator                    对象的职责,不生成子类

  5.Facade                       一个子系统的接口 

  6.Flyweight                      对象的存储开销

  7.Proxy                   如果访问一个对象,该对象的访问位置  

=========================================================================================================================

  行为

  1.Chain of Responsibility             满足一个请求对象

  2.Command                   何时、怎样满足一个请求对象

  3.Interpreter                   一个语言的文法及解释

  4.Iterator                  如何遍历、访问一个聚合的各元素

  5.Mediator                   对象间怎么交互、和谁交互

  6.Memento            一个对象中那些私有信息存放在该对象之外,以及在什么时候进行存储

  7.Observer              多个对象依赖于另一个对象,而这些对象又如何保持一致

  8.State                        对象的状态

  9.Strategy                         算法

  10.Template Method                 算法中的某些步骤

  11.Visitor              某些可作用于一个(组)对象上的操作,但不修改这些对象的类

=========================================================================================================================

  设计的可变方面可以帮助我们怎么选择设计模式。它不是考虑什么会迫使你的设计改变,而是考虑你想要的什么变化却又不会引起重新设计。

========================================================================================================================= 

 创建型

  1.Abstract Factory(抽象工厂)

  技术分享

  意图:

  提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。说的直白一点,该模式描述了怎样咋不直接实例化类的情况下创建一系列相关的产品对象。

  适用性:

  一个系统要独立于它的产品的创建、组合和表示时。

  一个系统要由多个产品系列中的一个来配置时

  当你要强调一系列相关的产品对象的设计以及以便进行联合使用时

  当你提供一个产品类库,而只想显示它们的接口而不显示实现时

  它最适用于产品对象的数目和种类不变,而具体产品系列之间存在不同的情况。我们通过实例化一个特定的具体工厂对象来选择产品系列,并且以后一直使用该工厂生产产品对象。我们也能够通过用一个不同的具体工厂实例来替换原来的工厂对象一改变整个产品系列。抽象工厂模式对产品系列的强调使它区别于其他至于其他只与一种产品对象有关的创建性模式。

  2.Builder(生成器)

 

技术分享
  意图:
  将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
  适用性:
  当创建复杂对象的算法应该独立于改对象的组成部分以及它们的装配方式时
  当构造过程必须允许被构造的对象有不同的表示时
  3.Factory Method(工厂方法)
技术分享
  意图:
  定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
  适用性:
  当一个类不知道它所必须创建的对象的类的时候
  当一个类希望由它的子类来指定它所创建的对象的时候
  当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候  

 

  4.Prototype (原型)

技术分享

  意图:

  用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新对象

   适用性:

  当一个系统应该独立与它的产品创建、构成和表示时,要使用Prototype模式

  当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者

  为了避免创建一个与产品类层次平行的工厂类层次时;或者

  当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆他们可能比每次用合适的状态手工实例化该类更方便一些

  5.Singleton(单例)

  技术分享

  意图:

  保证一个类只有一个实例,并提供一个访问它的全局访问点

  适用性:

  当类只有一个实例而且客户可以从一个众所周知的访问点访问它时

  当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时

  结构型

  1.Adapter(适配器) 

技术分享

 

  意图:

  将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

  适用性:

  你想使用一个已经存在的类,而它的接口不符合你的要求

  你想创建一个可以复用的类,该类可以与其他不相关的类或者不可预见的类(即那些接口可能不一定兼容的类)协同工作

  (仅适用于对象adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口。对象适配器可以适配它的父类接口

  2.Bridge(桥接)

技术分享

  意图:

  将抽象部分与它的实现部分分离

  适用性: 

  

 

设计模式概述

标签:

原文地址:http://www.cnblogs.com/SamSarah/p/4920720.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!