欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    专题2设计模式.ppt

    • 资源ID:87331196       资源大小:516KB        全文页数:51页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    专题2设计模式.ppt

    设计模式概述设计模式概述GoF 的的设计模式设计模式在面向对象的编程中,软件编程人员更加注在面向对象的编程中,软件编程人员更加注重以前的代码的重用性和可维护性。重以前的代码的重用性和可维护性。设计模式使人们可以更加简单方便地复用成设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理成设计模式也会使新系统开发者更加容易理解其设计思路。解其设计思路。一个模式有四个基本要素一个模式有四个基本要素:1.模式名称(模式名称(pattern name)一个助记名,一个助记名,它用一两个词来描述模式的问题、解决它用一两个词来描述模式的问题、解决方案和效果。方案和效果。2.问题问题(problem)描述了应该在何时使用描述了应该在何时使用模式。模式。3.解决方案解决方案(solution)描述了设计的组成描述了设计的组成成分,它们之间的相互关系及各自的职成分,它们之间的相互关系及各自的职责和协作方式。责和协作方式。4.效果效果(consequences)描述了模式应用的描述了模式应用的效果及使用模式应权衡的问题。效果及使用模式应权衡的问题。A.创建模式创建模式设计模式之设计模式之Factory(工厂方法和抽象工厂工厂方法和抽象工厂)提供一个提供一个创建一系列相关或相互依建一系列相关或相互依赖对象的象的接口接口,而无需指定它而无需指定它们具体的具体的类。设计模式之设计模式之BuilderBuilder:将一个复杂对象的构建与它的表示将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表分离,使得同样的构建过程可以创建不同的表示。示。Prototype:用原型实例指定创建对象的种类,用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。并且通过拷贝这个原型来创建新的对象。B.结构模式结构模式设计模式之设计模式之Proxy为其他对象提供一个代理以控制对这个对象的为其他对象提供一个代理以控制对这个对象的访问。访问。设计模式之设计模式之Adapter使得原本由于接口不兼容而不能一起工作的那使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。些类可以一起工作。设计模式之设计模式之Composite将对象组合成树形结构以表示将对象组合成树形结构以表示“部分部分-整体整体”的的层次结构。它使得客户对单个对象和复合对象层次结构。它使得客户对单个对象和复合对象的使用具有一致性。的使用具有一致性。C.行为模式行为模式设计模式之设计模式之Template 定义一个操作中的算法的骨架,而将一些步定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。骤延迟到子类中。Template Method使得使得子类可以不改变一个算法的结构即可重定义子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。该算法的某些特定步骤。设计模式之设计模式之ObserverObserver:定义对象间的一种一对多的依定义对象间的一种一对多的依赖关系赖关系,以便当一个对象的状态发生改变时以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。所有依赖于它的对象都得到通知并自动刷新。设计模式设计模式-创建型模式创建型模式例例迷宫游戏最初代码:例子工厂方法工厂方法(Factory Method)目的目的:通过定义一个创建产品的接口通过定义一个创建产品的接口,让让Creator的子类具体决定实例化哪个产的子类具体决定实例化哪个产品类品类.即将即将产品的实例化延迟到子类产品的实例化延迟到子类.结构结构:实现实现:无参工厂方法无参工厂方法参数化工厂方法参数化工厂方法Virtual Product*MakeProduct(int ProductID);使用摸板类使用摸板类:Template Class SubCreator:public Creator virtual Product*MakeProduct()return new TheProduct;例子例子:工厂方法结构工厂方法结构抽象工厂抽象工厂(Abstract Factory)目的:目的:提供一个类,它定义了创建一系列产品提供一个类,它定义了创建一系列产品的接口函数;在这个类的派生类中,重写某些的接口函数;在这个类的派生类中,重写某些接口函数,以便生成新产品系列。接口函数,以便生成新产品系列。结构结构:优点和缺点:优点和缺点:易于改变产品系列易于改变产品系列难以增加新种类的产品难以增加新种类的产品例:例:抽象工厂抽象工厂生成器生成器(Builder)目的:将一个复杂对象的构建与它的表目的:将一个复杂对象的构建与它的表示分离示分离,使得同样的构建过程可以创建不使得同样的构建过程可以创建不同的表示同的表示.工作原理:工作原理:Builder 模式是一步一步创建模式是一步一步创建一个复杂的对象一个复杂的对象,它允许用户可以只通过它允许用户可以只通过指定复杂对象的类型和内容就可以构建指定复杂对象的类型和内容就可以构建它们它们.用户不知道内部的具体构建细节用户不知道内部的具体构建细节.为何使用为何使用?是为了将构建复杂对象的过程和是为了将构建复杂对象的过程和它的部件解耦它的部件解耦.注意注意:是解耦过程是解耦过程和部件和部件.如何使用如何使用?首先假设一个复杂对象是由多个首先假设一个复杂对象是由多个部件组成的部件组成的,Builder 模式是把复模式是把复杂对象的创建和部件的创建分别杂对象的创建和部件的创建分别开来开来,分别用分别用Builder 类和类和Director 类来表示类来表示.结构结构优点:优点:易于改变复杂产品的内部表示易于改变复杂产品的内部表示易于控制构造过程易于控制构造过程例例1:例例2:生成器生成器原型原型(Prototype)目的:目的:Prototype 模式允许一个对象再创模式允许一个对象再创建另外一个可定制的对象,根本无需知建另外一个可定制的对象,根本无需知道任何如何创建的细节。道任何如何创建的细节。工作原理工作原理:通过将一个原型对象传给那个通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来对象通过请求原型对象拷贝它们自己来实施创建。实施创建。结构结构:优点:优点:减少子类减少子类 运行时可改变应用的产品运行时可改变应用的产品例例1:原型原型Singleton(单态单态)定义定义:Singleton 模式主要作用是保证在应用程模式主要作用是保证在应用程序中,一个序中,一个Class 只有一个实例存在。一只有一个实例存在。一个实例表示是单线程,在很多操作中,个实例表示是单线程,在很多操作中,比如建立目录比如建立目录 数据库连接都需要单线程数据库连接都需要单线程操作,操作,Singleton 模式经常用于控制对系模式经常用于控制对系统资源的控制统资源的控制,public class Singleton private:static Singleton*instance;public:static Singleton*getInstance()if(instance=NULL)instance=new Singleton();return instance;Singleton:Singleton*instance=NULL;调用方法:调用方法:Singleton:getInstance()templateclassCSingleprotected:CSingle();virtualCSingle();private:staticT*g_pInstance;staticintg_count;CSingle(constCSingle&objectSrc);voidoperator=(constCSingle&objectSrc);public:staticT*Instance()g_count+;if(!g_pInstance)g_pInstance=newT();returng_pInstance;virtualvoidRelease()if(g_count=0)g_count=0;return;if(-g_count)return;deleteg_pInstance;g_pInstance=0;g_count=0;templateT*CSingle:g_pInstance=0;templateintCSingle:g_count=0;classDerived:publicCSinglefriendCSingle;protected:Derived();Derived();设计模式设计模式-结构型模式结构型模式装饰装饰(Decorator)目的:动态地给一个对象添加职责。目的:动态地给一个对象添加职责。适用适用动态地给对象添加额外的职责或撤销职责动态地给对象添加额外的职责或撤销职责当不能用生成子类的方法进行扩充时当不能用生成子类的方法进行扩充时效果效果比静态继承更灵活比静态继承更灵活结构:结构:例:例:装饰装饰适配器适配器(Adapter)目的:转换类的接口到另外一个接口,以便使目的:转换类的接口到另外一个接口,以便使不能一起工作的类可以一起工作不能一起工作的类可以一起工作适用:适用:使用一个已经存在,但接口不符合的类使用一个已经存在,但接口不符合的类(仅对象适配器)要使用一些存在的子类,但不可(仅对象适配器)要使用一些存在的子类,但不可能对每个都进行子类化以便匹配需要的接口。这时,能对每个都进行子类化以便匹配需要的接口。这时,可适配子类的父类接口。可适配子类的父类接口。类适配器结构类适配器结构继承继承对象适配器结构对象适配器结构组合组合例:例:类适配器类适配器对象适配器对象适配器桥接桥接(Bridge)将将对象的抽象的部分与实现部分分离,使他们对象的抽象的部分与实现部分分离,使他们可以独立地变化可以独立地变化适用适用分离接口和实现间的固定关系,如运行时可选择或分离接口和实现间的固定关系,如运行时可选择或切换不同的实现切换不同的实现可以通过派生子类的方法扩充抽象和实现部分可以通过派生子类的方法扩充抽象和实现部分结构结构例例桥接桥接编写一个程序,画出图形,要求可编写一个程序,画出图形,要求可在运行时决定图形对象(圆或矩形)在运行时决定图形对象(圆或矩形),并动态决定采用那种绘出该对象,并动态决定采用那种绘出该对象的具体方法。的具体方法。DP1DP2draw_a_line(x1,y1,x2,y2)drawline(x1,x2,y1,y2)draw_a_circle(x,y,r);Drawcircle(x,y,r)将实现部分封装在一个抽象类中将实现部分封装在一个抽象类中在被实现的抽象部分基类中包含一个在被实现的抽象部分基类中包含一个实现部分基类的句柄。实现部分基类的句柄。void main()Shape*s1,*s2;Drawing*dp1,*dp2;dp1=new V1Drawing;S1=new Rectangle(dp1,1,1,2,2);dp2=new V2Drawing;S2=new Circle(dp2,2,2,4);delete s1;delete s2;delete dp1;delete dp2;组合组合(Composite)目的:将对象以树形结构组织起来目的:将对象以树形结构组织起来,以达成以达成“部分整体部分整体”的层次结构,使得客户端的层次结构,使得客户端对单个对象和组合对象的使用具有一致性对单个对象和组合对象的使用具有一致性.原理:组合体内这些对象都有共同接口原理:组合体内这些对象都有共同接口,当当组合体一个对象的方法被调用执行时,组合体一个对象的方法被调用执行时,Composite 将遍历将遍历(Iterator)整个树形结整个树形结构构,寻找同样包含这个方法的对象并实现调寻找同样包含这个方法的对象并实现调用执行。用执行。Composite 好处好处:1.使客户端调用简单,客户端可以一致的使用组合使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端是单个对象还是整个组合结构,这就简化了客户端代码。代码。2.更容易在组合体内加入对象部件更容易在组合体内加入对象部件.客户端不必因为客户端不必因为加入了新的对象部件而更改代码。加入了新的对象部件而更改代码。如何使用如何使用Composite?Composite 有个规定,那就是要在接口内部定义一有个规定,那就是要在接口内部定义一个用于访问和管理个用于访问和管理Composite 组合体的对象(或称组合体的对象(或称部件部件Component).结构结构例:例:组合组合外观外观(Facade)目的:通过给子系统添加一个高层的一目的:通过给子系统添加一个高层的一致的接口,降低系统的复杂性。致的接口,降低系统的复杂性。适用适用为一个复杂的子系统提供一个简单的接口时。为一个复杂的子系统提供一个简单的接口时。有利于减少子系统之间的依赖性,提高独立有利于减少子系统之间的依赖性,提高独立性和可移植性性和可移植性结构:结构:代理代理(Proxy)目的:为对象提供一种代理以控制对这目的:为对象提供一种代理以控制对这个对象的访问。个对象的访问。适用适用远程代理远程代理虚代理虚代理保护代理保护代理结构结构例例代理代理设计模式设计模式-行为模式策略策略(Strategy)目的:将一系列算法一一封装,并且使目的:将一系列算法一一封装,并且使他们可相互替换。使得算法的变化可独他们可相互替换。使得算法的变化可独立于使用它的客户。立于使用它的客户。适用适用许多相关的类仅仅是行为有异许多相关的类仅仅是行为有异可以使用一个算法的不同变体可以使用一个算法的不同变体结构结构例:例:策略策略状态状态(State)目的:允许一个对象在其内部状态改变时改变目的:允许一个对象在其内部状态改变时改变它的行为。它的行为。适用适用一个对象的行为取决于它的状态,运行时需要根据一个对象的行为取决于它的状态,运行时需要根据状态动态地改变行为状态动态地改变行为一个操作一个操作(行为行为)中含有庞大的多分支条件语句,且中含有庞大的多分支条件语句,且这些分支依赖于该对象的状态这些分支依赖于该对象的状态结构结构例子例子状态状态中介者中介者(Mediator)目的:用一个中介对象联接一系列对对象的交目的:用一个中介对象联接一系列对对象的交互,使得各对象不再需要显式地相互引用。互,使得各对象不再需要显式地相互引用。适用适用:一组对象相互通信,具有复杂的依赖关系。一组对象相互通信,具有复杂的依赖关系。一个对象直接与其他多个对象通信,导致难以复用一个对象直接与其他多个对象通信,导致难以复用该对象该对象将分布于多个对象间的行为集中在一起将分布于多个对象间的行为集中在一起结构结构例例中介者中介者观察者观察者(Observer)目的:当一个对象的状态发生改变时,所有依赖目的:当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。于它的对象都得到通知并自动更新。适用:适用:两组对象两组对象A和和B,A依赖依赖B,同时需要同时需要A和和B各自独立地各自独立地改变和复用。改变和复用。一个对象的改变需要同时改变其他多个对象,但对象一个对象的改变需要同时改变其他多个对象,但对象的数目可动态改变的数目可动态改变一个对象的改变需要同时改变其他多个对象,但具体一个对象的改变需要同时改变其他多个对象,但具体的对象可动态改变的对象可动态改变结构结构例例观察者观察者

    注意事项

    本文(专题2设计模式.ppt)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开