作业——在线学习Android课程之第十五周(设计模式二)

一、设计模式(二)

5、“接口隔离”模式

  • 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案。

(1)Facade 门面模式

  • 为子系统中的一组接口提供一个一致(稳定)的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)。

这里写图片描述
这里写图片描述

(2)Proxy 代理模式

  • 为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。

这里写图片描述
这里写图片描述

(3)Adapter 适配器

  • 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

    这里写图片描述
    这里写图片描述

(4)Mediator 模式

6、“状态变化”模式

  • 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“状态变化”模式为这一问题提供了一种解决方安案

(1)State 状态模式

  • 允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。

这里写图片描述
这里写图片描述

(2)Memento 模式

7、“数据结构”模式

  • 常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这些特定数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案。

(1)Composite 模式

  • 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性(稳定)。

这里写图片描述
这里写图片描述

(2)Iterator 迭代器

  • 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定)该对象的内部表示。

这里写图片描述
这里写图片描述

(3)Chain of Resposibility 模式

8、“行为变化”模式

  • 在组件的构建过程中,组件行为的变化经常导致组件本身剧烈的变化。“行为变化”模式将组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦合。

(1)Command 命令模式

  • 将一个请求(行为)封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

这里写图片描述
这里写图片描述

(2)Visitor 访问器

  • 表示一个作用于某对象结构中的各元素的操作。使得可以在不改变(稳定)各元素的类的前提下定义(扩展)作用于这些元素的新操作(变化)。

这里写图片描述
这里写图片描述

9、“领域规则”模式

  • 在特定领域中,某些变化虽然频繁,但可以抽象为某种规则。这时候,结合特定领域,将问题抽象为语法规则,从而给出在该领域下的一般性解决方案。

(1)Interpreter 解析器

  • 给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子。

这里写图片描述
这里写图片描述

二、总结

一个目标:管理变化,提高复用!

两种手段:分解–抽象

什么时候不用模式?

  • 代码可读性很差时
  • 需求理解还很浅时
  • 变化没有显现时
  • 不是系统的关键依赖点
  • 项目没有复用价值时
  • 项目将要发布时

经验

  • 代码质量优于模式
  • 不要为模式而模式
  • 关注抽象类 & 接口
  • 理清变化点和稳定点
  • 审视依赖关系
  • 要有Framework 和 Application 的区隔思维
  • 良好的设计是演化的结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值