代理模式
2015-12-26 14:25
330 查看
代理模式,为其他对象提供一种代理以控制对这个对象的访问
我理解的就是这个样子:
本来1可以直接找到2的
但是由于一些原因,1不能直接找到2,所以要借助3来找2
以书上例子为例,卓贾易委托戴励帮自己追娇娇
定义一个“送礼物”接口
让追求者去实现“送礼物”接口
让“代理”去实现“送礼物”接口
被追求者类
客户端代码
效果:
书上还介绍了代理模式的应用:远程代理、虚拟代理、安全代理、智能指引,不明白,就先写到这吧。
我理解的就是这个样子:
本来1可以直接找到2的
但是由于一些原因,1不能直接找到2,所以要借助3来找2
以书上例子为例,卓贾易委托戴励帮自己追娇娇
定义一个“送礼物”接口
interface IGiveGift { void GiveDolls(); void GiveFlowers(); void GiveChocolate(); }
让追求者去实现“送礼物”接口
class Pursuit :IGiveGift { SchoolGirl mm; public Pursuit(SchoolGirl mm) { this.mm = mm; } public void GiveDolls() { Console.WriteLine(mm.Name + "送你洋娃娃"); } public void GiveFlowers() { Console.WriteLine(mm.Name + "送你鲜花"); } public void GiveChocolate() { Console.WriteLine(mm.Name + "送你巧克力"); } }
让“代理”去实现“送礼物”接口
//代理类,在实现方法中去调用“追求者”类的相关方法 class Proxy { Pursuit gg; public Proxy(SchoolGirl mm) { gg = new Pursuit(mm ); } public void GiveDolls() { gg.GiveDolls(); } public void GiveFlowers() { gg.GiveFlowers(); } public void GiveChocolate() { gg.GiveChocolate (); } }
被追求者类
class SchoolGirl { private string name; public string Name { get { return name; } set { name = value; } } }
客户端代码
class Program { static void Main(string[] args) { SchoolGirl jiaojiao = new SchoolGirl(); jiaojiao.Name = "李娇娇"; Proxy daili = new Proxy(jiaojiao ); daili.GiveChocolate(); daili.GiveDolls(); daili.GiveFlowers(); Console.Read(); } }
效果:
书上还介绍了代理模式的应用:远程代理、虚拟代理、安全代理、智能指引,不明白,就先写到这吧。
相关文章推荐
- bzoj 3158 千钧一发(最小割)
- 1-5-03:求整数的和与均值
- 为RecyclerView添加头视图和尾视图
- ubuntu 15.04 编译安装 mysql 5.5.44
- JavaScript原型、函数伪装(apply,call)、继承
- 点击按钮图片放大查看
- java的静态导入
- Mysql入门实战上
- python threading 模块来实现多线程
- Objective - C - 字面量(Literals)整理
- OpenGL&CG技术之Render To Texture
- 设计模式之观察者模式
- 相机开发(聚焦、横竖屏拍照、照片存储、连续拍照等)
- KMP算法
- React-Native 组件练习-购物app侧滑菜单
- 数据库系统概论复习总结2 --- 第二章关系数据库
- Java基础--反射
- [LeetCode]Scramble String
- C语言简易的硬盘操作器
- linux查看历史命令history