


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结构型模式涉及到如何组合类和对象以获得更大的结构。结构型偶是采用继承机制来组合接口或实现。一个简单的例子是采用多重继承方法来将两个以上的对象组合成一个类,结果这个类包含了所有父类的性质。这一模式尤其有助于多个独立开发的类库协同工作。另外一个例子就是适配器模式,一个来说,适配器使得一个接口(adaptee的接口)与其它接口兼容,从而给出了多个不同接口的统一抽象,为此,适配器需要一个adaptee类进行私有继承,这样,适配器就可用adaptee的接口表示它的接口。结构型模式不是对接口和实现进行组合,而是描述了如何对这些接口进行组合,从而实现新功能的一一些方法。因为可以在运行时改变对象组合关系,所以对象组合方式具有更大了灵活性,而这些机制用静态类组合是不肯能实现的。组合模式(Composite)是结构性模式的一个实例,它描述了如何构造一个类层次式结构,这一结构有两类对象(基元对象和组合对象)所对应的类构成,其中的组合对象使得你可以组合基元以及其它的组合对象,从而形成更复杂的结构。代理模式(Proxy),Proxy对象作为其它对象的一个方便的代替或者占位符,它可以有多种形式,代理模式提供了对对象的一下儿特有性质的一定程度上的间接访问,从而它可以限制、增强或修改这些性质。享元模式(Flyweight)为共享对象定义了一个结构,至少有两个原因要求对象共享,即效率和一致性。享元模式的对象共享机制主要强调对象的空间效率。使用很多的对象的应用必须考虑莫个对象的开销。使用对象共享而不是进行对象复制,可以节省大量的空间资源。但是,仅仅当执行对象没有定义与上下文相关的状态时,它们才可以共享。享元模式的对象没有这样的状态,任何执行任务时需要的其它一些信息仅仅当需要时才传递过去。由于不存在与上下文相关的状态,因此享元对象可以被自由地共享。如果说享元模式说明如何生成很多小的对象,那么面板模式(Facade)模式则描述了如何用单个对象表示整个系统。模式中Faade用来表示一组对象,Faade的职责是将消息转发给它所表示的对象。桥接模式将对象的抽象和其实现相分离,从而可以单独的改变它们。装饰器模式(Decorator)描述了如何动态地为对象添加职责。装饰器模式是一种结构型模式,这一模式采用递归方式组合对象,从而允许你添加任意多的对象职责。例如,一个包含用户界面组件的装饰器对象可以将边框或阴影这样的装饰添加到该组件中,或者它可以将窗口滚动或缩放的功能添加到组件中。每个装饰对象必须与其组件的接口兼容并保持将消息传递给它。装饰器模式在转发一条消息前或后都可以完成它的工作。1 门面与适配器你可能认为门面模式是另外一组对象的适配器。但是这种解释忽略了一个实事,即门面定义了一个新的接口,而Adapter则复用一个原有的接口。适配器的目的关键使得两个已有的接口协同工作,而不是定义一个全新的接口。2 组合与装饰器组合模式和装饰器模式具有类似的结构图,这说明它们都基于递归组合来组织可变数目的对象。这一共同点可能会使你认为,装饰器对象是一个退化了的组件。但是这一观点没有领悟到装饰器模式的要点,相似点仅止于递归组合,同样,这是因为这两种模式的目的是不同。装饰器旨在使得能够不需要生成子类即可给对象添加、修改其职责。这就避免了静态实现所有功能组合,从而导致子类急剧增加。组合模式的目的它旨在构造类,使得多个相关对象能够以统一的方式处理,而多重对象可以被视为一个对象来处理。组合模式重点不在于修饰,而是在于表示。尽管它们的目的截然不同,但是具有互补性。因此,组合和装饰器两种模式通常是协同使用。在使用这两种模式进行设计时,我没无需定义新的类,仅仅需要将一些对象插接在一起即可构件应用。这时系统中将会有一个抽象类,它有一些组合(Composite)子类和装饰(Decorator)子类,还有一些实现系统的基本构件模块。次数,组合和装饰器将拥有共同的接口,从装饰器模式的角度看,组合(Composite)时一个ConcreteComponent。而从组合模式角度看,装饰器(Decorator)则是一个叶子(Leaf)。组合模式一种结构型模式,它用于把众多对象组织成一个整体。我们和大批量对象打交道时,可以把其视为一个对象来看待,并把它们组织成层次性的树,通常它并不修改方法调用,而只是将其沿着组合对象与子对象的链向下传递,直到达到并落实在叶子节点对象上。装饰器也是一种结构型模式,它并非用于组织对象,而是用于在不修改现有对象或不派生子类的前提下为其增加职责。一般情况下,装饰器会透明地传递所有方法调用。不过,装饰者旨在对方法的修改。3 装饰器与代理另一种与装饰器结构相似的模式是代理。这两种模式都描述了怎样为对象提供一定程度上的间接引用。代理(Proxy)对象和装饰(Decorator)对象的实现部分都保留了一个另外对象的引用。它们向这个对象发送请求。然而同样,它们的设计目的不同。像装饰器模式一样,代理模式构成一个对象并为用户提供一致的接口。但是与装饰器模式不同的时,代理模式不能动态地添加或者分离性质,它也不是为递归组合而设计的。它的目的是,当直接访问一个实体不方便或者不符合需要时,为这个实体提供一个代替者。例如,实体在远程设备上,访问受到限制或者实体是持久储存地。在代理模式中,实体定义了关键功能,而代理提供(或拒绝)对它的访问。在装饰器模式中,组件仅仅提供了部分功能,而一个或者多个装饰器负责完成其它的功能。装饰器模式不适用于编译时不能(至少不方便)确定对象的全部功能的情况。这种开放性使得递归组合成为装饰器模式中一个必不可少的部分。而在代理模式中则不是这样,因为代理模式强调一种关系(代理和它的实体之间的关系),这种关系是可以静态的表达。模式间的这些差异非常重要,因为它们针对了面向对象设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械设计课程设计:基于工程教育理念的教学改革
- 智慧环保云平台解决方案
- 2025年蝇蚴病防治药项目建议书
- 防诈骗课件教学课件
- 活动目录的配置与管理
- 宠物店创业计划书
- 防诈骗课件下载视频
- 管理提升的措施及方法
- 总装安全生产
- 纠正预防措施
- 《加强基层工会组织建设 规范基层工会换届选举》课件
- 职工代表提案培训
- 轧钢工技能理论考试题库(含答案)
- 精益六西格玛黄带认定考试题库及答案
- 《回归分析》 课件 第1章 绪论
- 2024年资格考试-对外汉语教师资格证考试近5年真题集锦(频考类试题)带答案
- 2024-2025学年上海黄浦区高三下学期第一次考试化学试题含解析
- 第十六届全国水利职业院校技能大赛(智能节水系统设计与安装)理论考试题库(含答案)
- 甘肃省科研经费管理办法
- 【课件收藏】幼儿园《古朗月行》教学课件
- 电气自动化行业中的职业生涯规划书
评论
0/150
提交评论