设计模式概述ppt课件.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《设计模式概述ppt课件.pptx》由会员分享,可在线阅读,更多相关《设计模式概述ppt课件.pptx(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Design Patterns设计模式概述设计模式概述引言设计模式的诞生与发展w 模式的诞生与定义 模式模式(Pattern)起源于起源于建筑业建筑业而非软件业而非软件业 模式之父模式之父美国加利佛尼亚大学环境结构中心研究所所长美国加利佛尼亚大学环境结构中心研究所所长Christopher Alexander博士博士 A Pattern Language: Towns, Buildings, Construction253个建筑和城市规划模式个建筑和城市规划模式 模式模式 Context(模式可适用的前提条件) Theme或Problem(在特定条件下要解决的目标问题) Solution(对目
2、标问题求解过程中各种物理关系的记述)设计模式的诞生与发展Christopher Alexander设计模式的诞生与发展w 模式的诞生与定义 Alexander给出了关于模式的经典定义:给出了关于模式的经典定义: 每个模式都描述了一个每个模式都描述了一个在我们的环境中不断出现的在我们的环境中不断出现的问题问题,然后描述了该问题的,然后描述了该问题的解决方案的核心解决方案的核心,通过,通过这种方式,人们可以无数次地这种方式,人们可以无数次地重用那些已有的解决重用那些已有的解决方案方案,无须再重复相同的工作,无须再重复相同的工作 模式模式是是在特定环境下在特定环境下人们解决某类重复出现人们解决某类重
3、复出现问题问题的一套成的一套成功或有效的功或有效的解决方案解决方案。 A pattern is a successful or efficient solution to a recurring problem within a context.设计模式的诞生与发展w 软件模式概述 20世纪世纪80年代末,软件工程界开始关注年代末,软件工程界开始关注Christopher Alexander等在这一住宅、公共建筑与城市规划领域的重大等在这一住宅、公共建筑与城市规划领域的重大突破突破 “四人组四人组(Gang of Four,GoF,分别是,分别是Erich Gamma, Richard Hel
4、m, Ralph Johnson和和John Vlissides)”于于1994年归纳发表了年归纳发表了23种在软件开发中使用频率较高的设计种在软件开发中使用频率较高的设计模式,旨在模式,旨在用模式来统一沟通面向对象方法在分析、设计和用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟实现间的鸿沟设计模式的诞生与发展设计模式的诞生与发展Erich Gamma苏黎世大学计算机科学博士,是苏黎世大学计算机科学博士,是Eclipse、 JUnit 等项目的负责人等项目的负责人John Vlissides斯坦福大学计算机科学博士,原斯坦福大学计算机科学博士,原IBM研究研究员,员,于于2005年年1
5、1月月24日因脑瘤去世,享日因脑瘤去世,享年年44岁岁Ralph Johnson 墨尔本大学计算机科学博士,原墨尔本大学计算机科学博士,原IBM 研研究员,现供职于波士顿顾问集团究员,现供职于波士顿顾问集团Richard Helm康奈尔大学计算机科学博士,伊利诺伊康奈尔大学计算机科学博士,伊利诺伊大学教授大学教授设计模式的诞生与发展w 软件模式概述 软件模式:软件模式:在一定条件下的软件开发问题及其解法在一定条件下的软件开发问题及其解法 问题描述 前提条件(环境或约束条件) 解法 效果设计模式的诞生与发展w 软件模式概述设计模式的诞生与发展w 设计模式的发展 从从1995年至今,设计模式在软件
6、开发中得以广泛应用,在年至今,设计模式在软件开发中得以广泛应用,在Sun的的Java SE/Java EE平台平台和和Microsoft的的.NET平台平台设计设计中应用了大量的设计模式中应用了大量的设计模式 轻量级框架:Struts、Spring、Hibernate、JUnit、NHibernate、NUnit 语言:C+、Java、C#、Objective-C、 VB.net、Smalltalk、PHP、 Delphi、JavaScript、Ruby 得到越来越多的企业和高校的关注与重视 越来越多的书籍和网站设计模式的定义与分类 w 设计模式的定义 设计模式设计模式(Design Patt
7、ern) 一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结 是一种用于对软件系统中不断重现的设计问题的解决方案进行文档化的技术 是一种共享专家设计经验的技术 目的:为了可重用代码、让代码更容易被他人理解、提高代码可靠性设计模式的定义与分类 w 设计模式的定义 设计模式是设计模式是在特定环境下在特定环境下为解决为解决某一通用软件设计问题某一通用软件设计问题提供提供的的一套定制的解决方案一套定制的解决方案,该方案描述了对象和类之间的相互作,该方案描述了对象和类之间的相互作用。用。Design patterns are descriptions of communicating o
8、bjects and classes that are customized to solve a general design problem in a particular context.设计模式的定义与分类w 设计模式的分类根据根据目的目的(模式是用来做什么的)可分为(模式是用来做什么的)可分为创建型创建型(Creational),结构型结构型(Structural)和和行为型行为型(Behavioral)三类:三类: 创建型模式创建型模式主要用于创建对象 结构型模式结构型模式主要用于处理类或对象的组合 行为型模式行为型模式主要用于描述类或对象如何交互和怎样分配职责GoF设计模式简介
9、范围范围目的目的创建型模式创建型模式结构型模式结构型模式行为型模式行为型模式类模式类模式工厂方法模式工厂方法模式(类)适配器模式(类)适配器模式解释器模式解释器模式模板方法模式模板方法模式对象模式对象模式抽象工厂模式抽象工厂模式建造者模式建造者模式原型模式原型模式单例模式单例模式(对象)适配器模式(对象)适配器模式桥接模式桥接模式组合模式组合模式装饰模式装饰模式外观模式外观模式享元模式享元模式代理模式代理模式职责链模式职责链模式命令模式命令模式迭代器模式迭代器模式中介者模式中介者模式备忘录模式备忘录模式观察者模式观察者模式状态模式状态模式策略模式策略模式访问者模式访问者模式设计模式的优点 w
10、融合了众多专家的经验,并以一种标准的形式供广大开发人员所用w 提供了一套通用的设计词汇和一种通用的语言,以方便开发人员之间进行沟通和交流,使得设计方案更加通俗易懂w 让人们可以更加简单方便地复用成功的设计和体系结构w 使得设计方案更加灵活,且易于修改w 将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本w 有助于初学者更深入地理解面向对象思想,方便阅读和学习现有类库与其他系统中的源代码,还可以提高软件的设计水平和代码质量w 单例模式w 工厂模式w 代理模式w 命令模式w 策略模式单例模式概述Windows任务管理器任务管理器在正常情况下只能打开在正常情况下只能打开唯一一个任务管理器
11、!唯一一个任务管理器!单例模式概述w 如何保证一个类只有一个实例并且这个实例易于被访问?(1) 全局变量:全局变量:可以确保对象随可以确保对象随时都可以被访问,但时都可以被访问,但不能防止创不能防止创建多个对象建多个对象(2) 让类自身负责创建和保存它让类自身负责创建和保存它的唯一实例,并保证不能创建其的唯一实例,并保证不能创建其他实例,它还提供一个访问该实他实例,它还提供一个访问该实例的方法例的方法单例模式概述w 单例模式的定义单例模式:单例模式:确保一个类只有一个实例只有一个实例,并提供一个全局访全局访问点问点来访问这个唯一实例。Singleton Pattern: Ensure a cl
12、ass has only one instance, and provide a global point of access to it.单例模式概述w 单例模式的定义要点:要点: 某个类只能有一个实例只能有一个实例 必须自行创建这个实例自行创建这个实例 必须自行向整个系统提供这个实例自行向整个系统提供这个实例单例模式的结构与实现w 单例模式的结构instanceif(instance=null) instance=new Singleton();return instance;Singleton- instance : Singleton-+Singleton ()GetInstance
13、().: Singleton单例模式的结构与实现w 单例模式的结构单例模式只包含一个单例角色:单例模式只包含一个单例角色: Singleton(单例)单例模式的结构与实现w 单例模式的实现私有构造函数私有构造函数静态私有成员变量(自身类型)静态私有成员变量(自身类型)静态公有的工厂方法静态公有的工厂方法class Singleton private static Singleton instance=null; /静态私有成员静态私有成员变量变量 /私有构造函数私有构造函数 private Singleton() /静态公有工厂方法,返回唯一实例静态公有工厂方法,返回唯一实例 public s
14、tatic Singleton GetInstance() if(instance=null) instance=new Singleton(); return instance; 简单工厂模式概述简单工厂模式示意图简单工厂模式示意图客户端客户端工厂工厂产品产品参数参数简单工厂模式概述w 简单工厂模式基本实现流程 具体产品类:具体产品类:将需要创建的各种不同产品对象的相关代码封装到将需要创建的各种不同产品对象的相关代码封装到具体产品类中具体产品类中 抽象产品类:抽象产品类:将具体产品类公共的代码进行抽象和提取后封装在将具体产品类公共的代码进行抽象和提取后封装在一个抽象产品类中一个抽象产品类中
15、工厂类:工厂类:提供一个工厂类用于创建各种产品,在工厂类中提供一提供一个工厂类用于创建各种产品,在工厂类中提供一个创建产品的工厂方法,该方法可以根据所传入参数的不同创建个创建产品的工厂方法,该方法可以根据所传入参数的不同创建不同的具体产品对象不同的具体产品对象 客户端:客户端:只需调用工厂类的工厂方法并传入相应的参数即可得到只需调用工厂类的工厂方法并传入相应的参数即可得到一个产品对象一个产品对象if(arg.Equals(A) return new ConcreteProductA();else if(arg.Equals(B) return new ConcreteProductB();el
16、se .简单工厂模式概述w 简单工厂模式的定义简单工厂模式简单工厂模式 (Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类具有共同的父类。简单工厂模式概述w 简单工厂模式的定义在简单工厂模式中用于创建实例的方法通常是在简单工厂模式中用于创建实例的方法通常是静态静态(static)方法方法,因此又被称为,因此又被称为静态工厂方法静态工厂方法(Static Factory Method)模式模式要点:要点:如果需要什么,如果需要什么,只需要传入一个正确的参数,只需要传入一个正确的参数
17、,就可以获取所需要的对象就可以获取所需要的对象,而,而无须知道其创建细节无须知道其创建细节简单工厂模式的结构与实现w 简单工厂模式的结构if(arg.Equals(A) return new ConcreteProductA();else if(arg.Equals(B) return new ConcreteProductB();else .ConcreteProductAProductFactory+ FactoryMethod (string arg).: ProductConcreteProductB简单工厂模式的结构与实现w 简单工厂模式的结构简单工厂模式包含以下简单工厂模式包含以下
18、3个角色:个角色: Factory(工厂角色) Product(抽象产品角色) ConcreteProduct(具体产品角色)简单工厂模式的结构与实现w 简单工厂模式的实现典型的抽象产品类代码:典型的抽象产品类代码:abstract class Product /所有产品类的公共业务方法所有产品类的公共业务方法public void MethodSame() /公共方法的实现公共方法的实现/声明抽象业务方法声明抽象业务方法public abstract void MethodDiff();简单工厂模式的结构与实现w 简单工厂模式的实现典型的具体产品类代码:典型的具体产品类代码:class Co
19、ncreteProductA : Product /实现业务方法实现业务方法 public override void MethodDiff() /业务方法的实现业务方法的实现 简单工厂模式的结构与实现w 简单工厂模式的实现典型的工厂类代码:典型的工厂类代码:class Factory /静态工厂方法静态工厂方法 public static Product GetProduct(string arg) Product product = null; if (arg.Equals(A) product = new ConcreteProductA(); /初始化设置初始化设置product el
20、se if (arg.Equals(B) product = new ConcreteProductB(); /初始化设置初始化设置product return product; 简单工厂模式的结构与实现w 简单工厂模式的实现典型的客户端代码:典型的客户端代码:class Program static void Main(string args) Product product; product = Factory.GetProduct(A); /通过工厂类创建产品对象通过工厂类创建产品对象 product.MethodSame(); product.MethodDiff(); 工厂方法模式概
21、述w 使用简单工厂模式设计的按钮工厂工厂方法模式概述w 使用工厂方法模式改进后的按钮工厂工厂方法模式概述w 分析工厂方法模式:工厂方法模式: 不再提供一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成 如果出现新的按钮类型,只需要为这种新类型的按钮定义一个具体的工厂类就可以创建该新按钮的实例工厂方法模式概述w 工厂方法模式的定义工厂方法模式:工厂方法模式:定义一个用于创建对象的接口,但是让子让子类决定将哪一个类实例化类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类延迟到其子类。Factory Method Pattern: Define a
22、n interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.工厂方法模式的结构与实现w 工厂方法模式的结构return new ConcreteProduct();ConcreteProductProductConcreteFactory+ FactoryMethod ().: ProductFactory+ FactoryMethod ().: Pro
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 概述 ppt 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内