设计模式(中篇:结构型)

前言

系列文章参考了《大话设计模式》和《Android源码设计模式》两本书

2.结构型

2.1 适配者模式

  • 相当于翻译官角色
    将一个类的接口转为另一个能够被兼容的接口
    在这里插入图片描述

  • 两个类所做事情相似,但是所需接口不同时使用,但优先考虑接口重构,再用适配器

  • 安卓中应用:ListView中的Adapter是最常见的,虽然有些偏离接口不兼容使用适配器的情景,但也是Adapter的一种应用。因为不同ListView数据类型,内容千变万化,通过Adapter和依赖倒转原则,我们只需在最后return view

2.2 桥接模式

  • 将抽象部分和实现部分分离
  • 铺垫:
    优先使用聚合/合成,只有关系是is-a时才用继承
    在这里插入图片描述
    在这里插入图片描述
    尽可能使关系是聚合,而不是如下
    在这里插入图片描述
  • UML图
    在这里插入图片描述
  • 代码
    Implementor
    在这里插入图片描述
    在这里插入图片描述
    Abstraction
    在这里插入图片描述
    在这里插入图片描述
    客户端
    在这里插入图片描述

2.3 代理模式

  • 相当于对象分身,为其他对象一种代理以控制对这个对象的访问
    在这里插入图片描述

  • 代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 应用:

    • 远程代理:一个对象在不同地址空间提供局部代表
    • 虚拟代理:对象创建开销大,存放实例化时间长,比如网页中的图片框替代真实图片
    • 安全代理:控制真实对象的访问权限
  • 安卓中的应用:ActivityManagerService中的ActivityManagerProxy,之间使用Binder实现进程中的Binder通信,属于远程代理

2.4 享元模式

  • 概念:
    共享技术支持大量细粒度(细节较多)的对象
  • UML图
    在这里插入图片描述
    像是‘‘见人说人话’’,将人格中的不同面展现给不一样的人,而享元是将对象中的细节分享给不同的部分,这里的元类似元数据的元
  • 代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.5 装饰模式

  • 作用:
    (像是可以随便搭衣服,没有限制)

    • 动态地给对象添加额外的职责
      (为已有功能动态添加更多功能)
    • 将核心职责和装饰功能结合
  • UML图
    在这里插入图片描述

  • 代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.6 组合模式

  • 整体与部分组合成树形结构,单个对象和组合对象使用一致
    (就像总公司和分公司功能一样时的关系)
  • UML图
    在这里插入图片描述
  • 代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.7 外观模式

  • 概念
    (像是将基金交给基金经理一样,对外接口便是基金)
    为子系统的接口提供一个更高层的接口,使得子系统更容易使用
  • UML图
    在这里插入图片描述
  • 代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 好处:提供简单接口,减少依赖,复用复杂且重复代码

最后

结构型设计模式包含了
1.桥接:抽象与实现相结合的模式,优先聚合,降低耦合;
2.装饰:动态添加职责,有具体成分类,装饰类和具体装饰类;
3.外观:在子系统接口中提出更高接口,易于应用;
4.适配器:解决接口不适配问题;
5.享元:抽象类和具体FlyWriter类,含有共享和非共享部分;
6.组合:单个和组合对象具有相同的功能;
7.代理:类似对象分身,起到对象跨进程,安全使用等目的。

未完待续,探索在路上~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值