欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

大话设计-代理模式

程序员文章站 2022-03-26 22:48:16
记录大话设计学习过程。 代理模式:代理者为其他对象提供代理,以控制对真实对象的访问。 用户调用代理者,代理者通过真实的对象引用让对象去做事情。但是代理者可以附加一些功能,然后才让真实对象去做事情。 代理模式运用案例:WebService生成代理访问服务,虚拟代理、安全代理(控制真实对象访问时的权限) ......

记录大话设计学习过程。

代理模式:代理者为其他对象提供代理,以控制对真实对象的访问。

用户调用代理者,代理者通过真实的对象引用让对象去做事情。但是代理者可以附加一些功能,然后才让真实对象去做事情。

代理模式运用案例:webservice生成代理访问服务,虚拟代理、安全代理(控制真实对象访问时的权限)、智能引用。

using system;

namespace consoleapp4
{
    class program
    {
        public static void main(string[] args)
        {
            var girl = new schoolgirl("邓紫棋");
            proxy proxy = new proxy(girl);
            proxy.giveflowers();
            proxy.givechocolate();
            proxy.givedolls();
        }
    }

    interface givegift
    {
        void givedolls();
        void giveflowers();
        void givechocolate();
    }

    class pursuit : givegift
    {
        schoolgirl girl;
        public pursuit(schoolgirl girl)
        {
            this.girl=girl;
        }

        public void givechocolate()
        {
            console.writeline("送巧克力");
        }

        public void givedolls()
        {
            console.writeline("送洋娃娃");
        }

        public void giveflowers()
        {
            console.writeline("送花");
        }
    }

    class proxy : givegift
    {
        pursuit pursuit;
        public proxy(schoolgirl girl)
        {
            pursuit = new pursuit(girl);
        }

        public void givechocolate()
        {
            this.pursuit.givechocolate();
        }

        public void givedolls()
        {
            this.pursuit.givedolls();
        }

        public void giveflowers()
        {
            this.pursuit.giveflowers();
        }
    }

    internal class schoolgirl
    {
        public string name { get; set; }
        public schoolgirl(string name)
        {
            this.name = name;
        }
    }
}
using system;

namespace consoleapp4
{
    class program
    {
        public static void main(string[] args)
        {
            proxy proxy = new proxy();
            proxy.request();
        }
    }

    abstract class subject
    {
        public abstract void request();
    }

    class realsubject : subject
    {
        public override void request()
        {
            console.writeline("真实对象在请求");
        }
    }

    class proxy : subject
    {
        realsubject realsubject;

        public proxy()
        {
            this.realsubject = new realsubject();
        }

        public override void request()
        {
            // 写一堆附加功能代码.....
            realsubject.request();
        }
    }
    
}