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

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

ID:44971236

大小:2.80 MB

页数:37页

时间:2019-11-06

软件设计模式之结构型模式_第1页
软件设计模式之结构型模式_第2页
软件设计模式之结构型模式_第3页
软件设计模式之结构型模式_第4页
软件设计模式之结构型模式_第5页
资源描述:

《软件设计模式之结构型模式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三章结构型模式课程目标结构型模式概述Adapter模式Bridge模式Composite模式Decorator模式Façade模式Flyweight模式Proxy模式体验项目——<使用Composite模式编写一个二叉树>使用Composite模式来编写如图3-1所示的二叉树,然后使用深度优先搜索法遍历该二叉树,并打印出根节点的高度,运行效果如图3-2所示。图3-1二叉树图图3-2二叉树遍历结果图结构型模式概述结构型模式是为解决怎样组装现有的类,设计他们的交互方式,从而达到实现一定的功能的目的。同时,结构型模式包容了对很多问题的解决,例如扩展性(外观模式,组成模式,代

2、理模式,装饰模式),封装性(适配器模式,桥接模式)。结构型模式中解决了以下几个问题:在不破坏类封装性的基础上,实现新的功能。这一点包括装饰模式,代理模式。在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。这一点包括桥接和适配器模式。创建一组类的统一访问接口,这是组成模式。对同一类创建不同的访问界面,提供给不同需要的访问者,这是外观模式。Adapter模式适配器模式有类适配器和对象匹配器两种形式。其中类适配器使用多继承(由于java不支持多继承,所以可以引入接口的概念)来实现一个接口对另一个接口的匹配,对象适配器主要依赖于对象组合来实现接口的匹配。比如jav

3、a窗体事件处理的事件适配器就是一个很好的例子。模式介绍主要适用于以下情况:使用一个已经存在的类,而它的接口不符合你的需求。创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口,仅适用于对象适配器。Adapter模式结构图适配器模式结构图如下:类适配器结构图对象适配器结构图Target:定义Client使用的与特定应用或领域相关的接口。Adaptee:定义一个已经存在的类,该类需要适配。Adapter:对Adaptee类和

4、Target接口进行适配。Client通过Adapter实例对象来调用某些方法,然后适配器调用Adaptee的方法来实现请求适配器模式示例比如我们编写过两个类,分别用于画圆形桩和方形桩,假设现在有一个应用,需要既画方形桩,又要画圆形桩,就可以使用该模式实现。使用对象适配器模式实现如下:publicclassDrawRound{publicvoiddisplayRound(Stringmsg){System.out.println("DrawRounddisplayRound():"+msg);}}publicclassDrawSquare{publicvoiddispl

5、aySquare(Stringstr){System.out.println("DrawSquaredisplaySquare():"+str);}}publicclassShapeAdapterextendsDrawSquare{privateDrawRoundround;publicShapeAdapter(DrawRoundr){this.round=r;}publicvoidinsertRound(Stringstr){round.displayRound(str);}}使用类适配器模式实现如下:publicinterfaceDrawRoundInterface

6、{publicvoiddisplayRound(Stringmsg);}publicclassDrawRoundimplementsDrawRoundInterface{publicvoiddisplayRound(Stringmsg){System.out.println("DrawRounddisplayRound():"+msg);}}publicclassShapeAdapterextendsDrawSquareimplementsDrawRoundInterface{privateDrawRoundround;publicShapeAdapter(DrawRo

7、undr){this.round=r;}publicvoiddisplayRound(Stringmsg){round.displayRound(msg);//doSomething}}publicclassClient{publicstaticvoidmain(String[]args){ShapeAdapterd=newShapeAdapter(newDrawRound());d.insertRound("圆形");d.displaySquare("方形");}}Adapter模式优势和不足类适配器的优缺点如下:用一个具体的Adapt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。