1 / 37
文档名称:

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

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

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

分享

预览

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

上传人:kt544455 2019/12/19 文件大小: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