美文网首页
{C#}设计模式辨析.代理

{C#}设计模式辨析.代理

作者: 码农猫爸 | 来源:发表于2021-08-08 08:52 被阅读0次

背景

  • 在原程序上加壳,ex. 壳=虚拟/保护/远程/日志记录 等

示例

using static System.Console;

namespace DesignPattern_Proxy
{
    // 真实类接口,可与代理类互换
    public interface ILogin
    {
        void Perform(string name);
    }

    // 真实类
    public class RealLogin : ILogin
    {
        public void Perform(string name)
            => WriteLine($"{name} is logged in.");
    }

    // 代理类
    public class LoginProxy : ILogin
    {
        private readonly ILogin login;
        private readonly string password;

        // 传入真实类
        public LoginProxy(ILogin login, string password)
        {
            this.login = login;
            this.password = password;
        }

        public void Perform(string name)
        {
            // 加壳
            if (!IsRightPassword(password))
            {
                WriteLine($"Invalid password of {name}!");
                return;
            }

            login.Perform(name);
        }

        private bool IsRightPassword(string password)
            => password == "123456";
    }

    class Program
    {
        static void Main(string[] args)
        {
            var real = new RealLogin();
            var proxy = new LoginProxy(real, "012345");
            proxy.Perform("Zhang San");

            proxy = new LoginProxy(real, "123456");
            proxy.Perform("Zhang San");

            ReadKey();
        }
    }
}

相关文章

  • {C#}设计模式辨析.代理

    背景 在原程序上加壳,ex. 壳=虚拟/保护/远程/日志记录 等 示例

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • {C#}设计模式辨析.命令

    背景 通过命令解耦接收者和调用者。 接收者,处理具体请求。 命令,绑定接收者和请求。 调用者=命令容器,可执行和撤...

  • {C#}设计模式辨析.状态

    背景 前序状态执行后,切换到后续状态 与责任链异同责任链:遍历并下放到具体责任者处理要求状态:在不同状态中轮转处理...

  • {C#}设计模式辨析.策略

    背景 策略作为算法,可自由替换 示例

  • {C#}设计模式辨析.门面

    背景 复杂系统,可切割成多个相互独立的子系统并由子系统组合而成 与桥接的异同桥接的是维度,每个维度可由子类替换门面...

  • {C#}设计模式辨析.组合

    背景 处理枝(叶的集合)和叶结构 示例

  • {C#}设计模式辨析.原型

    背景 绕过构造器,快速创建已有原型的复制品。 复制品可与原型脱勾,独立修改属性或字段。 示例

  • {C#}设计模式辨析.抽象工厂

    背景 工厂模式也可应用到多类产品,单类产品请参考https://www.jianshu.com/p/09992d0...

  • {C#}设计模式辨析.桥接

    背景 桥接多个维度时 实现@抽象类:子类继承产生基础维度构造器传参其它维度(1-n)方法提炼或交互多个维度 示例

网友评论

      本文标题:{C#}设计模式辨析.代理

      本文链接:https://www.haomeiwen.com/subject/bxmgvltx.html