面向复用的设计模式(Adaptor,Decorator,Facade)

什么是设计模式?
1)设计模式:对软件设计中给定上下文中常见问题的通用的、可重用的解决方案。
2)除了类本身,设计模式更强调多个类/对象之间的关系和交互过程—比接口/类复用的粒度更大。

设计模式可分为哪些类?
1)创建型模式
2)结构型模式
3)行为类模式

Adapter 适配器模式

Adapter pattern的作用

Adapter将某个类/接口转换为client期望的其他形式,解决类之间接口不兼容的问题,又可以通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类。
在这里插入图片描述

Adapter Design Pattern的两种类型

Inheritance继承
在这里插入图片描述
Delegation委托
在这里插入图片描述

Adaptor的两种实例

在这里插入图片描述
在这里插入图片描述

Decorator 装饰器模式

Decorator的一个启发式实例

假设你要使用栈数据结构的不同的延伸性方法:
UndoStack: 一个允许撤消以前的push或pop操作的堆栈
SecureStack: 需要密码的堆栈

SynchronizedStack: 序列化并发访问的堆栈
如果需要特性的任意组合呢?
SecureUndoStack: 一个需要密码的堆栈,它还允许您撤消以前的操作
SynchronizedUndoStack: 一个堆栈,它序列化并允许您撤消以前的操作
假设我们要完成后三种方法:使用普通的继承做法会导致组合爆炸和大量的代码重复
在这里插入图片描述

Decoorator的实现

问题的关键在于为对象增加不同侧面的特性,对每一个特性构造子类,通过委派机制增加到对象上。
以递归的方式实现Decorator

接口:定义装饰物执行的公共操作
起始对象,在其基础上增加功能(装饰),将通用的方法放到此对象中
在这里插入图片描述
Decorator抽象类是所有装饰类的基类,里面包含的成员变量component 指向了被装饰的对象。
在这里插入图片描述

Decorator实例1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

客户端需要一个具有多种特性的object,通过一层一层的装饰来实现

Decorator实例2

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Decorator vs. Inheritance

  1. 装饰器在运行时组成特征
  2. 装饰器由多个协作对象组成
  3. 装饰器能混合搭配多个装饰品.

Facade 外观模式

问题的提出:客户端需要怎样通过一个简化的接口来访问复杂系统内的功能?
解决的方法:Facade提供一个统一的接口来取代一系列小接口调用,相当于对复杂系统做了一个封装,简化客户端使用,这样子就可以便于客户端学习使用,解耦。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值