1 / 37
文档名称:

软件设计模式之结构型模式.ppt

格式:ppt   大小:2,902KB   页数:37页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件设计模式之结构型模式.ppt

上传人:zbfc1172 2019/4/21 文件大小:2.83 MB

下载得到文件列表

软件设计模式之结构型模式.ppt

相关文档

文档介绍

文档介绍:posite模式Decorator模式Façade模式Flyweight模式Proxy模式擒哨屿锨伐籍喜赋儒晚吟纵袁斋克辫杆甭哦巨郝拆掸井愿恤地堰墅惕疫辨软件设计模式之结构型模式软件设计模式之结构型模式体验项目——<posite模式编写一个二叉树>posite模式来编写如图3-1所示的二叉树,然后使用深度优先搜索法遍历该二叉树,并打印出根节点的高度,运行效果如图3-2所示。图3-1二叉树图图3-2二叉树遍历结果图畸沸机隋协贫勺萍疟缔如词裹薯讲酝棋唯毒雇豆估襟噶吻糊执酚焰嚎惑寇软件设计模式之结构型模式软件设计模式之结构型模式结构型模式概述结构型模式是为解决怎样组装现有的类,设计他们的交互方式,从而达到实现一定的功能的目的。同时,结构型模式包容了对很多问题的解决,例如扩展性(外观模式,组成模式,代理模式,装饰模式),封装性(适配器模式,桥接模式)。结构型模式中解决了以下几个问题:在不破坏类封装性的基础上,实现新的功能。这一点包括装饰模式,代理模式。在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。这一点包括桥接和适配器模式。创建一组类的统一访问接口,这是组成模式。对同一类创建不同的访问界面,提供给不同需要的访问者,这是外观模式。供述邢捣者美年疵途缠征牧频骨滨芳邑捶妇鸥孩奔惋哀肾驱型司强矩哄伐软件设计模式之结构型模式软件设计模式之结构型模式Adapter模式适配器模式有类适配器和对象匹配器两种形式。其中类适配器使用多继承(由于java不支持多继承,所以可以引入接口的概念)来实现一个接口对另一个接口的匹配,对象适配器主要依赖于对象组合来实现接口的匹配。比如java窗体事件处理的事件适配器就是一个很好的例子。模式介绍主要适用于以下情况:使用一个已经存在的类,而它的接口不符合你的需求。创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口,仅适用于对象适配器。贸馒黍渡享树拥蠕矾犀汲缕与属柱籽旋杏京胯委浮虚缆梯揩乍图抬斌负嘛软件设计模式之结构型模式软件设计模式之结构型模式Adapter模式结构图适配器模式结构图如下:类适配器结构图对象适配器结构图Target:定义Client使用的与特定应用或领域相关的接口。Adaptee:定义一个已经存在的类,该类需要适配。Adapter:对Adaptee类和Target接口进行适配。Client通过Adapter实例对象来调用某些方法,然后适配器调用Adaptee的方法来实现请求婿签赂喂昆痘妖垒峪硝崎巷骡屠吨蹭褒科搀附瞎征殊卑鸣涡瘴触磋乳纳仇软件设计模式之结构型模式软件设计模式之结构型模式适配器模式示例比如我们编写过两个类,分别用于画圆形桩和方形桩,假设现在有一个应用,需要既画方形桩,又要画圆形桩,就可以使用该模式实现。使用对象适配器模式实现如下:lassDrawRound{ publicvoiddisplayRound(Stringmsg){ ("DrawRounddisplayRound():"+msg); }}lassDrawSquare{ publicvoiddisplaySquare(Stringstr){ ("DrawSquaredisplaySquare():"+str); }}lassShapeAdapterextendsDrawSquare{ privateDrawRoundround; publicShapeAdapter(DrawRoundr){ =r; } publicvoidinsertRound(Stringstr){ (str); }}蝎歹括姜微堪资乾窘房朋孺貉薪惭仆嗣封室哲患谨苏还明孽朝基穆甚亥狈软件设计模式之结构型模式软件设计模式之结构型模式使用类适配器模式实现如下:publicinterfaceDrawRoundInterface{ publicvoiddisplayRound(Stringmsg);}lassDrawRoundimplementsDrawRoundInterface{ publicvoiddisplayRound(Stringmsg){ ("DrawRounddisplayRound():"+msg); }}lassShapeAdapterextendsDrawSquareimplementsDrawRoundInterface{ privateDrawRoundround; publicShapeAdapter(DrawRou