当前位置: 移动技术网 > IT编程>软件设计>设计模式 > 大话设计-代理模式

大话设计-代理模式

2020年03月13日  | 移动技术网IT编程  | 我要评论

记录大话设计学习过程。

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

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

代理模式运用案例: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();
        }
    }
    
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网