设计模式(07) 代理模式(简单入门 结构模式)

From Now On,Let us begin Design Patterns。

代理模式

定义

  • 为其他对象提供一种代理以控制对这个对象的访问。 Provide asurrogate or placeholder for another object to control access to it.

代理模式也叫做委托模式,它是一项基本设计技巧。许多其它的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式,而且在日常的应用中,代理模式可以提供非常好的访问控制。下面看一下通用类图中三个角色的定义:

1. Subject抽象主题角色:
可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求;

2. RealSubject具体主题角色:
也叫做被委托角色、被代理角色。它才是业务逻辑的具体执行者;

3. Proxy代理主题角色:
也叫做委托类、代理类。它负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色实现,并且在真实主题角色处理完毕前后做预处理和善后处理工作。

通用类图:
这里写图片描述

通用源码实现如下:

这里写图片描述

代理模式的优点:

  • 职责清晰:真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件事务,附带的结果就是编程简洁

  • 高扩展性:具体主题角色是随时都会发生变化的,只要它实现了接口,不用管它如何变化,都逃不了接口,那我们的代理类完全可以在不做任何修改的情况下使用。

代理模式的缺点:

  • 不清楚

代理模式的使用场景:

需要将事务委托其它模块的情境

需要对另一对象进行访问控制的情境

代理模式的分类

透明代理:用户不用知道代理的存在,可以直接访问目标

普通代理:用户要先知道代理的存在,才能访问目标

强制代理:用户直接调用真实角色,不用关心代理是否存在,但是其代理的产生是由真实角色决定

代理模式的例子:源自head frist of 设计模式

类图:
这里写图片描述

买车的行为接口:
这里写图片描述

顾客买车的具体行为:
这里写图片描述

代理类:4S店销售员:
这里写图片描述

买车的场景:
这里写图片描述

运行结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值