设计模式之代理模式_普通代理、强制代理、动态代理 C#实现

结构型模式

说明
记录《设计模式之禅》的学习之路,并用C#实现之

结构型模式(Structural Pattern)关注如何将现有类或对象组织在一起形成更加强大的结构
可分为两种:

  • 类结构型模式:关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系
  • 对象结构型模式:关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象,然后通过该对象调用其方法。更符合“合成复用原则”🐟

代理模式(Proxy Pattern)

在这里插入图片描述

   public interface IGamePlayer
    {
        public void login(string user, string key);
        public void killBoss();
        public void upgrade();
    }

    public class GamePlayer : IGamePlayer
    {
        private string name = "";
        public void killBoss()
        {
            Console.WriteLine(this.name + "杀死了Boss");
        }

        public void login(string user, string key)
        {
            Console.WriteLine(this.name + "登录了");
        }

        public void upgrade()
        {
            Console.WriteLine(this.name + "升级了");
        }
    }
    public class GamePlayerProxy :IGamePlayer
    {
        private IGamePlayer player = null;
        public GamePlayerProxy(IGamePlayer gamePlayer)
        {
            player = gamePlayer;
        }
        public void killBoss()
        {
            this.player.killBoss();
        }

        public void login(string user, string key)
        {
            this.player.login(user, key);

        }

        public void upgrade()
        {
            this.player.upgrade();
        }
    }

    public class PlayerProxyClient
    {
        public  void main()
        {
            IGamePlayer zhangsan = new GamePlayer();
            IGamePlayer proxy = new GamePlayerProxy(zhangsan);
            proxy.login("zhangsan", "1");
            proxy.killBoss();
            proxy.upgrade();
        }
    }

定义

Provide a surrogate or placeholder for another object to control access to it.
为其他对象提供 一种代理以控制对这个对象的访问。
通用类图
在这里插入图片描述

代理模式也叫做委托模式,它是一项基本设计技巧。
许多其他的模式,如状态模式、策 略模式、访问者模式本质上是在更特殊的场合采用了委托模式,
而且在日常的应用中,代理 模式可以提供非常好的访问控制。
在一些著名开源软件中也经常见到它的身影,如Struts2的 Form元素映射就采用了代理模式(准确地说是动态代理模式)。
● Subject抽象主题角色
抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求。
● RealSubject具体主题角色
也叫做被委托角色、被代理角色。它才是冤大头,是业务逻辑的具体执行者。
● Proxy代理主题角色 也叫做委托类、代理类。
它负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色实现,
并且在真实主题角色处理完毕前后做预处理和善后处理工作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值