B.结构型模式.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
B.结构型模式

结构型模式涉及到如何组合类和对象以获得更大的结构。结构型偶是采用继承机制来组合接口或实现。一个简单的例子是采用多重继承方法来将两个以上的对象组合成一个类,结果这个类包含了所有父类的性质。这一模式尤其有助于多个独立开发的类库协同工作。另外一个例子就是适配器模式,一个来说,适配器使得一个接口(adaptee的接口)与其它接口兼容,从而给出了多个不同接口的统一抽象,为此,适配器需要一个adaptee类进行私有继承,这样,适配器就可用adaptee的接口表示它的接口。结构型模式不是对接口和实现进行组合,而是描述了如何对这些接口进行组合,从而实现新功能的一一些方法。因为可以在运行时改变对象组合关系,所以对象组合方式具有更大了灵活性,而这些机制用静态类组合是不肯能实现的。组合模式(Composite)是结构性模式的一个实例,它描述了如何构造一个类层次式结构,这一结构有两类对象(基元对象和组合对象)所对应的类构成,其中的组合对象使得你可以组合基元以及其它的组合对象,从而形成更复杂的结构。代理模式(Proxy),Proxy对象作为其它对象的一个方便的代替或者占位符,它可以有多种形式,代理模式提供了对对象的一下儿特有性质的一定程度上的间接访问,从而它可以限制、增强或修改这些性质。享元模式(Flyweight)为共享对象定义了一个结构,至少有两个原因要求对象共享,即效率和一致性。享元模式的对象共享机制主要强调对象的空间效率。使用很多的对象的应用必须考虑莫个对象的开销。使用对象共享而不是进行对象复制,可以节省大量的空间资源。但是,仅仅当执行对象没有定义与上下文相关的状态时,它们才可以共享。享元模式的对象没有这样的状态,任何执行任务时需要的其它一些信息仅仅当需要时才传递过去。由于不存在与上下文相关的状态,因此享元对象可以被自由地共享。如果说享元模式说明如何生成很多小的对象,那么面板模式(Facade)模式则描述了如何用单个对象表示整个系统。模式中Fa?ade用来表示一组对象,Fa?ade的职责是将消息转发给它所表示的对象。桥接模式将对象的抽象和其实现相分离,从而可以单独的改变它们。装饰器模式(Decorator)描述了如何动态地为对象添加职责。装饰器模式是一种结构型模式,这一模式采用递归方式组合对象,从而允许你添加任意多的对象职责。例如,一个包含用户界面组件的装饰器对象可以将边框或阴影这样的装饰添加到该组件中,或者它可以将窗口滚动或缩放的功能添加到组件中。每个装饰对象必须与其组件的接口兼容并保持将消息传递给它。装饰器模式在转发一条消息前或后都可以完成它的工作。门面与适配器你可能认为门面模式是另外一组对象的适配器。但是这种解释忽略了一个实事,即门面定义了一个新的接口,而Adapter则复用一个原有的接口。适配器的目的关键使得两个已有的接口协同工作,而不是定义一个全新的接口。组合与装饰器组合模式和装饰器模式具有类似的结构图,这说明它们都基于递归组合来组织可变数目的对象。这一共同点可能会使你认为,装饰器对象是一个退化了的组件。但是这一观点没有领悟到装饰器模式的要点,相似点仅止于递归组合,同样,这是因为这两种模式的目的是不同。装饰器旨在使得能够不需要生成子类即可给对象添加、修改其职责。这就避免了静态实现所有功能组合,从而导致子类急剧增加。组合模式的目的它旨在构造类,使得多个相关对象能够以统一的方式处理,而多重对象可以被视为一个对象来处理。组合模式重点不在于修饰,而是在于表示。尽管它们的目的截然不同,但是具有互补性。因此,组合和装饰器两种模式通常是协同使用。在使用这两种模式进行设计时,我没无需定义新的类,仅仅需要将一些对象插接在一起即可构件应用。这时系统中将会有一个抽象类,它有一些组合(Composite)子类和装饰(Decorator)子类,还有一些实现系统的基本构件模块。次数,组合和装饰器将拥有共同的接口,从装饰器模式的角度看,组合(Composite)时一个ConcreteComponent。而从组合模式角度看,装饰器(Decorator)则是一个叶子(Leaf)。组合模式一种结构型模式,它用于把众多对象组织成一个整体。我们和大批量对象打交道时,可以把其视为一个对象来看待,并把它们组织成层次性的树,通常它并不修改方法调用,而只是将其沿着组合对象与子对象的链向下传递,直到达到并落实在叶子节点对象上。装饰器也是一种结构型模式,它并非用于组织对象,而是用于在不修改现有对象或不派生子类的前提下为其增加职责。一般情况下,装饰器会透明地传递所有方法调用。不过,装饰者旨在对方法的修改。装饰器与代理另一种与装饰器结构相似的模式是代理。这两种模式都描述了怎样为对象提供一定程度上的间接引用。代理(Proxy)对象和装饰(Decorator)对象的实现部分都保留了一个另外对象

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档