设计模式笔记(转)

本文转自:http://www.cnblogs.com/windlaughing/archive/2013/04/10/3013031.html

手头有一本设计模式,但是总是有闲事坚持不下去,转载了大神的笔记总结,下周坚持看完!!!!!

笔者所发表的设计模式系列的随笔一共包含15篇,归纳总结了《Head First 设计模式》一书中的内容。在这些随笔中,尽量用简洁、概括的语言说明每个模式的概念、特点、用法,并配以图片(类图、流程图)给读者一种直观、具体的印象。希望大家能有所收获。

1、策略模式 The Strategy pattern
2、观察者模式 The Observer Pattern 
3、装饰者模式 The Decorator Pattern 
4、工厂方法模式 The Factory Method Pattern 
5、抽象工厂模式 The Abstract Factory Pattern 
6、单例模式 The Singleton Pattern 
7、命令模式 The Command Pattern 
8、适配器模式 The Adapter Pattern 
9、外观模式 The Facade Pattern 
10、模板方法模式 The Template Method Pattern 
11、迭代器模式 The Iterator Pattern 
12、组合模式 The Composite Pattern 
13、状态模式 The State Pattern 
14、代理模式 The Proxy Pattern 
15、复合模式 The Compound Pattern

模式汇总

  1. 装饰着: 包装一个对象,已提供新的行为
  2. 状态: 封装了基于状态的行为,以使 状态拥有者将行为委托到当前的状态
  3. 迭代器: 在对象的集合之间游走,而不暴露集合的实现
  4. 外观: 简化一群类的接口
  5. 策略: 封装可以互换的行为,并使用委托来决定要使用哪一个。
  6. 代理: 包装对象,以控制对此对象的访问。
  7. 工厂方法: 封装实例化的行为,工厂子类决定实例化哪个具体的类、采用什么策略实例化类
  8. 适配器: 封装对象并提供不同的接口
  9. 观察者: 让对象能够在状态改变时被通知
  10. 模板方法:父类定义算法的模板, 由子类决定如何实现算法中的某些步骤
  11. 组合: 客户用一致的方法处理对象的集合和单个对象
  12. 单件: 确保有且只有一个对象被创建
  13. 抽象工厂: 允许客户创建对象的家族,而无需指定它们的具体类
  14. 命令: 封装请求,成为对象

相似模式的比较

  • 装饰者: 包装另一个对象,并提供额外的行为
  • 外观: 包装许多对象,以简化它们的接口
  • 代理:包装另一个对象,并控制对它的访问
  • 适配器:包装另一个对象,并提供不同的接口

设计原则汇总

  1. “封装变化”。找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码放在一起。
  2. 针对接口编程,而不是针对实现编程。
  3. 对用组合,少用继承。
  4. 为交互对象之间的松耦合设计而努力。
  5. 对扩展开放,对修改关闭。
  6. 要依赖抽象,不要依赖具体类
  7. 最少知识原则:只和你的密友谈话
  8. 好莱坞原则:(高层组件对待底层组件的方式)别调用(打电话给)我们,我们会调用(打电话给)你。
  9. 单一责任,一个类应该只有一个引起变化的原因

 

模式的概念:

(看了这么多设计模式,我们再来回顾一下“模式”的概念,以及我们应该怎样来应用这些模式)

模式:是在某情景(context)下,针对某问题的某种解决方案。

  • 问题:包括目标和约束。
  • 解决方案:一个通用的设计,用来解决约束,达到目标。

1、对于每个问题,我们应该思考的内容:

2、结构决定功能。类的结构决定类的功能,汽车的结构决定了汽车的功能……

3、设计应“保持简单”。Keep It Simple。“将你的思想集中在设计本身,而不是在模式上。只有在真正需要时才使用模式”。

设计模式分类(1):

“不管是在什么时候,只要我们有一大堆东西,很自然的就会想要为它们分类,这可以帮助我们再更抽象的层次上思考这些问题”

1、创建型模式:涉及到将对象实例化。这类模式都提供一个方法,将客户从所需要实例化的对象中解耦。

例如:Singleton、Factory Method、Abstract Factory、Builder、Prototype

2、行为型模式:都涉及到类和对象如何交互及分配职责。

例如:Template Method、Iterator、Command、Observer、State、Strategy、Mediator、Visitor、Memento、Interpreter、Chain of Responsibility

3、结构型模式:描述类和对象如何被组合以建立新的结构或新的功能。

例如:Decorator、Composite、Proxy、Facade、Adapter、Flyweight、Bridge

设计模式分类(2):

1、类模式:描述类之间的关系如何通过继承定义。类模式的关系是在编译时建立的。

Template Method、Factory Method、Adapter、Interpreter

2、对象模式:描述对象之间的关系,而且主要是利用组合定义。对象模式的关系通常在运行时建立,而且更加动态,更具有弹性。

Composite、Decorator、Proxy、Strategy、Iterator、Command、Facade、Observer、
State、Abstract Factory、Singleton、Visitor、Memento、Chain of
Responsibility、Bridge、Flyweight、Prototype、Builder、Mediator

时间: 2024-11-05 11:44:20

设计模式笔记(转)的相关文章

php设计模式笔记:单例模式

意图: 保证一个类仅有一个实例,并且提供一个全局访问点 单例模式有三个特点: 1.一个类只有一个实例2.它必须自行创建这个实例3.必须自行向整个系统提供这个实例 主要实现: Singleton定义了一个instance操作,允许外部访问它的唯一实例,instance是一个类方法,负责创建它的唯一实例. singleton适用场景: 1.当类只能有一个实例而且外部可以从一个公共的访问点访问它.2.当这个唯一实例应该是通过子类化可扩展的.并且用户应该无需更改代码就能使用一个扩展的实例时. Singl

Asp.net设计模式笔记之一:理解设计模式

GOF设计模式著作中的23种设计模式可以分成三组:创建型(Creational),结构型(Structural),行为型(Behavioral).下面来做详细的剖析. 创建型 创建型模式处理对象构造和引用.他们将对象实例的实例化责任从客户代码中抽象出来,从而让代码保持松散耦合,将创建复杂对象的责任放在一个地方,这遵循了单一责任原则和分离关注点原则. 下面是“创建型”分组中的模式: 1.Abstract Factory(抽象工厂)模式:提供一个接口来创建一组相关的对象. 2.Factory Met

设计模式----看大话设计模式笔记(二)

9.原型模式(Prototype): 用原型实例指定创建对象的种类,并通过拷贝这些原型创建行的对象. UML图: 原型模式其实就是从一个对象创建另一个可定制的对象,并且不需要知道任何创建的细节. .NET 中实现ICloneable接口即可. 一般在初始化信息不发生变化的情况下,克隆是最好的办法,隐藏了对象创建的细节,又提高了性能. MemberwiseClone()方法,如果字段是值类型,对该字段进行逐位复制:如果是引用类型,复制引用但是不复制引用的对象,因此原始对象及产生的副本引用同一对象.

(CZ深入浅出Java基础)设计模式笔记

一.面向对象思想设计原则 1.单一职责原则 其实就是开发人员经常说的"高内聚,低耦合",也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个.在设计模式中,所有的设计模式都遵循这一原则. 2.开闭原则 核心思想是:一个对象对扩展开放,对修改关闭.其实开闭原则的意思就是:对类的改动是通过增加代码进行的,而不是修改现有代码.也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证它能一直运行下去,如何能够做到这一点呢?这就需要借助于抽象和

[设计模式] .NET设计模式笔记 - 了解设计模式

今天在TerryLee的cnblog(http://terrylee.cnblogs.com)里看到了与设计模式相关的整套文章,初学设计模式看完每篇文章后做些笔记和摘抄. ●什么是设计模式,什么是架构? 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的

[设计模式] .NET设计模式笔记 - 有多少种设计模式

.NET下的23中设计模式. ※创建型模式篇 ●单件模式(Single Pattern) ●抽象工厂模式(Abstract Factory) ●建造者模式(Builder Pattern) ●工厂方法(Factory Method) ●原型模式(Protype Pattern) ※结构型模式篇 ●适配器模式(Adapter Pattern) ●桥接模式(Bridge Pattern) ●装饰模式(Decorator Pattern) ●组合模式(Composite Pattern) ●外观模式(

大话PHP设计模式笔记

针对PHP的设计模式进行总结记录. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜那么麻烦了.  笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2   一.关于命名空间命名空间1.命名空间介绍2.命名空间使用 实例:test1.php文件代码: 1 2 3 4 5 6 7 <?php namespace Test1; function test(

php设计模式笔记--总结篇

一.引入  设计模式的一般定义不再说,只大概说一下我理解的设计模式,我理解的设计模式的主要目的是利用面向对象(类.接口等)特点,让代码更加易于扩展,易于重用,易于维护.这三个特点也就要求我们不要将太多功能积攒到一个类里面,而是分配到更多的类里面.所以,二十种乃至更多的设计模式主要是围绕上述四个目的进行设计的. php设计模式这一本书讲了19种设计模式,但其实有大部分设计模式思想上或者设计上是一样的思维与形式,我将在下面进行归类和总结,以便于大家更好地理解这本书,但大家最好看一下这本书,里面的使用

Asp.net设计模式笔记之二:应用程序分离与关注点分离

本次笔记主要涉及的内容如下: 1.将智能UI(SmartUI)反模式重构成分层方式的示例代码 2.分层设计与传统的Asp.net WebForm模型(代码后植)相比具有的优势 3.逻辑分层概念以及分离应用程序关注点 4.企业级Asp.net应用程序中各个不同层的责任 一.智能UI反模式 asp.net WebForm模型使得我们能够随意将控件拖放到设计页面上,然后进行代码书写.而其本身则使用代码后植技术,使得后台代码和前台代码分离开.后台代码包含了应用程序的所有事件处理,数据访问以及业务逻辑等,