标签:
目前为止,设计模式现在共有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(生成器)
4.Prototype (原型)
意图:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新对象
适用性:
当一个系统应该独立与它的产品创建、构成和表示时,要使用Prototype模式
当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者
为了避免创建一个与产品类层次平行的工厂类层次时;或者
当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆他们可能比每次用合适的状态手工实例化该类更方便一些
5.Singleton(单例)
意图:
保证一个类只有一个实例,并提供一个访问它的全局访问点
适用性:
当类只有一个实例而且客户可以从一个众所周知的访问点访问它时
当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时
结构型
1.Adapter(适配器)
意图:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
适用性:
你想使用一个已经存在的类,而它的接口不符合你的要求
你想创建一个可以复用的类,该类可以与其他不相关的类或者不可预见的类(即那些接口可能不一定兼容的类)协同工作
(仅适用于对象adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口。对象适配器可以适配它的父类接口
2.Bridge(桥接)
意图:
将抽象部分与它的实现部分分离
适用性:
标签:
原文地址:http://www.cnblogs.com/SamSarah/p/4920720.html