代理模式
来源:互联网 发布:short在c语言中 编辑:程序博客网 时间:2024/06/04 19:00
http://blog.csdn.net/lhc1105/article/details/21000767
代理模式模型
为其它对象提供一种代理以控制对这个对象的访问.
示例
在高中的时候,有很多害羞的孩纸们有了暗恋的对象后,如果自己不好意思给自己的女神或者男神送礼物的话,通常都会找一个跟自己暗恋者关系比较好的,托它帮自己送东西,这种恋爱的方式就是代理模式。说通俗一点儿,就叫为别人做嫁衣模式。因为看起来始终是代理在做这一切的活动,RealSubject始终是躲在幕后的,不积极主动的结果就是代理最终和被暗恋者有情人终成眷属了。
当然,代理模式不仅仅只有“为他人做嫁衣”这一个作用。这种适得其反的效果我们还是不提倡的。生活中还有很多代理模式。比如,银行卡支付。每次逛街,带张卡,一切搞定。
结构如图:
我们把钱放在银行卡里,当卖完东西要向老板付钱的时候,只要刷卡就搞定了。所以,这里,银行卡代理了自己存在银行的现钞,并在买东西是执行付钱的动作。这样是不是非常的方便呢!出门时,妈妈再也不用担心我的钱被小偷偷走了。
代码如下:
- namespace 银行卡买东西
- {
- class Boss //商品类
- {
- private string name;
- public string Name
- {
- get { return name; }
- set { name = value; }
- }
- }
- interface BuyGoods //买东西的接口
- {
- void BuyClothes(); //买衣服
- void BuyFood(); //买吃的
- void BuyBooks(); //买书
- }
- class MyCash : BuyGoods //银行卡中的现金
- {
- Boss boss; //定义收钱的人
- public MyCash(Boss boss)
- {
- this.boss = boss;
- }
- public void BuyClothes()
- {
- Console.WriteLine(boss.Name + ",我买这件衣服了,给你钱。");
- }
- public void BuyFood()
- {
- Console.WriteLine(boss.Name + ",我要吃这个,给你钱。");
- }
- public void BuyBooks()
- {
- Console.WriteLine(boss.Name + ",我要这本书,给你钱。");
- }
- }
- class BankCard:BuyGoods
- {
- MyCash myRMB;
- public BankCard(Boss boss)
- {
- myRMB = new MyCash(boss);
- }
- public void BuyClothes()
- {
- myRMB.BuyClothes();
- }
- public void BuyFood()
- {
- myRMB.BuyFood();
- }
- public void BuyBooks()
- {
- myRMB.BuyBooks();
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Boss LaoBan = new Boss();
- LaoBan.Name = "老板";
- BankCard ACBCCard = new BankCard(LaoBan);
- ACBCCard.BuyClothes();
- ACBCCard.BuyFood();
- ACBCCard.BuyBooks();
- }
- }
- }
运行后如图:
PS:我要是真的有张可以这样消费的卡就好了。
0 0
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- Hibernate4 掌控数据库:(二)hibernate逆向出的DAO使用
- android 文件转换成String
- 步进电机
- 亲和数
- Android常用工具类
- 代理模式
- Core Servlets and JavaServer Pages
- Windows环境下配置Apache 2.2.x + SSL
- 实例讲解SQL注入攻击
- JavaScript浮点运算的精度问题
- uses-permission权限列表
- Android四大组件之ContentProvider
- 解决访问android developer速度慢,甚至不能打开网页的问题
- 关于登录mysql时遇到的 error1045 错误