代理模式(八)

定义:安全

    在面向对象的系统中,有些对象因为某种缘由(好比建立对象开销很大、或某些操做不安全),直接使用会给使用者或者系统结构带来不少麻烦。这样咱们在不失去透明操做对象的同时来管理、控制这些对象特有的复杂性,增长一层间接层是软件开发常见的解决方式。函数

 

核心思想:测试

    增长一个中间层,使用中间层间接控制。this

 

案例1:代理

    讨债案例,鉴于整个社会的风气,欠钱的是大爷。借钱容易,要钱难。以此为案例,当咱们本身要债的时候,常常要不回来。这个时候咱们须要一个代理,即:讨债公司。这样就容易把钱要回来了。讨债公司即proxy.代理;在此我呼吁社会人群,少一些套路,多一些真诚。如下为代码code

 

interface subjectBase//建立一个接口,用于一个行为,讨债
    {
        void Dun();//讨债函数
        
    }

 public class subjectPerson : subjectBase//这个基于讨债接口,真是的债权人。债权人讨债真的太难了,因此咱们使用代理类
    {
        public void Dun()//真是债权人讨债
        {
            Console.WriteLine("直接讨债人:欠钱的大爷,快把钱还了吧!");
        }

        public void Pay()//使用代理讨债须要债权人付出一些费用
        {
            Console.WriteLine("唉,找讨债公司须要付给一些费用..");
        }
    }


 public class subjectCompany : subjectBase//讨债公司基于讨债接口的讨债行为,即代理人
    {
        subjectPerson person = new subjectPerson();//建立一个真是债券人,讨债公司要根据债权人进行讨债
        public void Dun()
        {
            this.person.Dun();//给讨债公司进行协议
            this.person.Pay();//付给讨债公司报酬
            Console.WriteLine("讨债公司:不还钱,在你家泼油漆");//讨债公司进行讨债
            Console.WriteLine("完成讨债....");//讨债完成
        }
    }


==========================================讨债测试========================================


 static void Main(string[] args)
        {
            subjectBase subject = new subjectPerson();
            (subject as subjectPerson).Dun();
            Console.WriteLine();
            subjectBase subjectcompany = new subjectCompany();
            (subjectcompany as subjectCompany).Dun();

            Console.ReadKey();
        }

 

总结:这里的代理只是一个小的案例,也许不是特别合适。可是它体现了代理(Proxy)思想。其实,代理模式多借用,静态函数、静态类与单例一块儿实现。由于它们调用起来比较方便。对象

相关文章
相关标签/搜索