- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
结构型模式
结构型模式的特点:
结构型模式涉及到如何组合类和对象以获得更大的结构。
结构型类模式采用继承机制来组合接口或实现。
结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法。而这种机制用静态类组合是不可能实现的。
适配器Adapter模式使得一个接口(adaptee的接口)与其他接口兼容,从而给出了多个不同接口的统一抽象。为此,类适配器对一个adapter类进行私有继承。这样,适配器就可以用adaptee的接口表示它的接口。
外观Facade模式则描述了如何用单个对象表示整个子系统。模式中的facade用来表示一组对象,facade的职责是将消息转发给它所表示的对象。
桥接Bridge模式将对象的抽象和其实现分离,从而可以独立地改变它们。
组合Composite模式描述了如何构造一个类层次式结构,这一结构由两种类型的对象(基元对象和组合对象)所对应的类构成.其中的组合对象使得你可以组合基元对象以及其他的组合对象,从而形成任意复杂的结构。
装饰Decorator模式采用递归方式组合对象,从而允许你添加任意多的对象职责。我们可以将一个Decorator对象嵌套在另外一个对象中就可以很简单地增加两个装饰,添加其他的装饰也是如此。因此,每个Decorator对象必须与其组件的接口兼容并保证将消息传递给它。Decorator模式在转发一条信息之前或之后都可以完成它的工作(比如绘制组件的边框)。
享元Flyweight模式的对象共享机制主要强调对象的空间效率
至少有两个原因要求对象共享:效率和一致性。使用很多对象的应用必需考虑每一个对象的开销。使用对象共享而不是进行对象复制,可以节省大量的空间资源。但是仅当这些对象没有定义与上下文相关的状态时,它们才可以被共享。Flyweight的对象没有这样的状态。任何执行任务时需要的其他一些信息仅当需要时才传递过去。由于不存在与上下文相关的状态,因此Flyweight对象可以被自由地共享。
代理Proxy模式中,proxy对象作为其他对象的一个方便的替代或占位符。它的使用可以有多种形式。例如它可以在局部空间中代表一个远程地址空间中的对象,也可以表示一个要求被加载的较大的对象,还可以用来保护对敏感对象的访问。Proxy模式还提供了对对象的一些特有性质的一定程度上的间接访问,从而它可以限制、增强或修改这些性质。
适配器模式(Adapter)
模式名:适配器
问题:有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。
解决方案:一个类的接口转换成客户希望的另外一个接口。使得原本由
于接口不兼容而不能一起工作的那些类可以一起工作。
参与者
·客户端Client:与符合Target接口的对象协同。
·目标Target:Client使用的与特定领域相关的接口。
·源系统Adaptee:一个已经存在的接口,这个接口需要适配以满足客户端要求。
· 适配器Adapter:对Adaptee的接口与Target接口进行适配
协作
Client在Adapter实例上调用一些操作。接着适配器调用Adaptee的操作实现这个请求。
适用的场合:
·想使用一个已经存在的类,而它的接口不符合需求。
·想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
·(仅适用于对象Adapter)想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
使用Adapter模式时需要考虑的其他因素有:
1) Adapter的匹配程度对Adaptee的接口与Target的接口进行
匹配的工作量
2)可插入的Adapter.当其他的类使用一个类时,如果所需的
假定条件越少,这个类就更具可复用性。
类适配器是用继承的方式使用源类,对象适配器采用委托的形式使用源类
效果
1)类适配器
·用一个具体的Adapter类对Adaptee和Target进行匹配。结果是当我们想要匹配一个类以及所有它的子类时,类Adapter将不能胜任工作。
·使得Adapter可以重定义Adaptee的部分行为
·仅仅引入了一个对象,并不需要额外的指针以间接得到
Adaptee
源系统Adaptee
/*** 源实现的接口*/
publicinterfaceIOneAdaptee{
//方法A
Public void operateA();
//方法B
Public void operateB(); }
/*** OneAdaptee一个源*/
Public class OneAdaptee implements IOneAdaptee{
Pub
文档评论(0)