设计模式精炼(二): 结构型00

举报
且听风吟 发表于 2019/10/28 19:56:15 2019/10/28
【摘要】 本文将介绍设计模型之结构型。

适配器模式

把一个接口转换成另一种接口从而能够匹配成客户端需要的接口。

类适配器模式

把适配类的API转换成目标类的API。
例:

image.png

对象适配器模式

对象的适配器模式不是使用继承关系连接到Adaptee类,而是使用委派关系连接到Adaptee类。
例:

image.png

装饰者模式

Wrapper模式,以对客户端透明的方式扩展对象的功能,是继承关系的一种替代。
    |- 装饰模式的用意是在不改变接口的前提下,增强所考虑的类的性能。
    |- 允许装饰模式改变接口,增加新的方法。

透明装饰模式

透明的装饰模式也就是理想的装饰模式,要求具体构件角色、装饰角色的接口与抽象构件角色的接口完全一致。

半透明装饰模式

装饰角色的接口与抽象构件角色接口不一致。
例:Java中的I/O设计模式,就是典型的装饰模式。
    |- InputStream
    |- ByteArrayInputStream
    |- FileInputStream
    |- FilterInputStream
    |- BufferedInputStream
    |- DataInputStream
    |- LineNumberInputStream
    |- PushbackInputStream //典型的半透明装饰模式,因为它扩展了一个unread()方法,这个方法是抽象接口所没有的。
    |- ObjectInputStream
    |- PipedInputStream
    |- SquenceInputStream
    |- StringBufferInputStream

适配器模式(做对比)

半透明装饰模式是介于透明装饰模式和适配器模式之间的一种设计模式。
例:

image.png

桥接模式

将抽象部分与它的实现部分分离,使他们都可以独立变化,目的是提高系统的可扩展性。
情景:将n种颜色涂在n种形状里,如何设计?
|- 提供两个父类一个是颜色、一个形状,颜色父类和形状父类两个类都包含了相应的子类,然后根据需要对颜色和形状进行组合。
例:

image.png

结果:
白色 -->长方形

组合模式

以树的结构来描述部分与整体的概念,和文件系统类似,父文件夹、文件、子文件、子文件夹等等。

安全式

要求管理聚集的地方只出现树枝构件中,而不出现在树叶构件中。
例:

image.png

透明式

透明式的合成模式要求所有的具体构件类,不论树枝构件还是树叶构件,均符合一个固定接口。
例:

image.png

Composite和Leaf与上面一样,不一样的是Client端,Client不需要关心他们之间的关系:

image.png


本文转载自微信公众号【java学习之道】。

原文链接:https://mp.weixin.qq.com/s?__biz=MzU4NzYwNDAwMg==&mid=2247484021&idx=1&sn=c45a57e2005667fe963c86c52a7c5f45&chksm=fde8cb38ca9f422e4c778bccd45bee9be457b9cf12ebcae5237c6a324716661166b7050d2322&scene=0#rd


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200