代理模式

简介:           代理模式模型         为其它对象提供一种代理以控制对这个对象的访问.                  示例              在高中的时候,有很多害羞的孩纸们有了暗恋的对象后,如果自己不好意思给自己的女神或者男神送礼物的话,通常都会找一个跟自己暗恋者关系比较好的,托它帮自己送东西,这种恋爱的方式就是代理模式。

     

    代理模式模型    

    为其它对象提供一种代理以控制对这个对象的访问.


        


     

  示例

      

      在高中的时候,有很多害羞的孩纸们有了暗恋的对象后,如果自己不好意思给自己的女神或者男神送礼物的话,通常都会找一个跟自己暗恋者关系比较好的,托它帮自己送东西,这种恋爱的方式就是代理模式。说通俗一点儿,就叫为别人做嫁衣模式。因为看起来始终是代理在做这一切的活动,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 = "老板";

            MyCash ACBCCard = new MyCash(LaoBan);

            ACBCCard.BuyClothes();
            ACBCCard.BuyFood();
            ACBCCard.BuyBooks();




        }
    }
}

运行后如图:

    

   PS:我要是真的有张可以这样消费的卡就好了。


目录
相关文章
|
6月前
|
设计模式
对于装饰器模式与代理模式的个人理解
摘要: 代理模式与装饰器模式虽相似,但目的不同。装饰器动态增强对象功能,如添加新特性,而不改变原有类。代理模式则用于控制访问,如优化昂贵操作或添加辅助服务(如日志),它可能在内部初始化原对象。用法上,装饰器由外部决定是否应用,允许链式创建,而代理通常内部调用,外部直接与代理交互,被代理对象可能独立不可用。
|
8月前
|
缓存 数据安全/隐私保护 C++
【C++】—— 代理模式
【C++】—— 代理模式
代理模式——为他人做嫁衣裳
代理模式——为他人做嫁衣裳
|
8月前
|
Java Spring
代理模式
代理模式
58 0
|
Java 网络安全 Maven
代理模式的运用
代理模式的运用
69 0
|
设计模式 JavaScript
关于代理模式我所知道的
关于代理模式我所知道的
90 0
|
Java Spring
代理模式你了解多少
代理模式你了解多少
84 0
|
设计模式 缓存 监控
我学会了,代理模式
代理模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
102 0
我学会了,代理模式
|
存储 设计模式 缓存
万洋-什么是代理模式
简介: 影视导演找演员谈合作一般是不会直接找到演员本人,而是先找到演员的经纪人,先由经纪人洽谈,经纪人觉得合适的话就会与演员本人商讨合作事项,这个过程导演与演员是不直接接触的。 这里就用到了**代理模式**,导演其实想找的人是演员,但是要先找到是经纪人,再由经纪人找演员沟通。真正的价值在于演员,但是这个过程中,对于导演来说,经纪人与演员体现出了同样的价值,经纪人会全权代理演员与导演洽谈,经纪人会用自己的专业性过滤掉一些不好的合作意向,从而避免演员被频繁打扰。
134 0
万洋-什么是代理模式
|
存储 设计模式 缓存
什么是代理模式
影视导演找演员谈合作一般是不会直接找到演员本人,而是先找到演员的经纪人,先由经纪人洽谈,经纪人觉得合适的话就会与演员本人商讨合作事项,这个过程导演与演员是不直接接触的。 这里就用到了**代理模式**,导演其实想找的人是演员,但是要先找到是经纪人,再由经纪人找演员沟通。真正的价值在于演员,但是这个过程中,对于导演来说,经纪人与演员体现出了同样的价值,经纪人会全权代理演员与导演洽谈,经纪人会用自己的专业性过滤掉一些不好的合作意向,从而避免演员被频繁打扰。
584 0
什么是代理模式