• 通过代理模式(包一层),实现对业务增加功能如日志,异常处理,缓存结果,到达不破坏原有的业务代码,扩展了功能


    通过代理模式(包一层),来实现对业务增加功能如日志,异常处理,缓存结果,感觉挺好的,到达不破坏原有的业务代码,扩展了功能

    /// <summary>
    /// 包一层:没有什么技术问题是包一层不能解决的,如果有,就再包一层
    /// 比如来个日志记录,可以避免修改业务类,只需要修改代理类
    /// 再来个异常处理
    /// 再来个性能提升--缓存结果-单例
    ///
    /// 通过代理,能够为对象扩展功能(不是增加业务)而不去修改原始业务类,也就是包了一层, 
     
    public class ProxySubject : ISubject
    {
    //组合一下
    private static ISubject _Subject = new RealSubject();
    public void DoSomething()
    {
    try
    {
    Console.WriteLine("prepare DoSomething...");
    _Subject.DoSomething();
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    throw ex;
    }
    }

    private static Dictionary<string, bool> ProxyDictionary = new Dictionary<string, bool>();
    public bool GetSomething()
    {
    try
    {
    Console.WriteLine("prepare GetSomething...");
    string key = "Proxy_GetSomething";
    bool bResult = false;
    if (!ProxyDictionary.ContainsKey(key))
    {
    bResult = _Subject.GetSomething();
    ProxyDictionary.Add(key, bResult);
    }
    else
    {
    bResult = ProxyDictionary[key];
    }
    return bResult;
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    throw ex;
    }
    }
    }

  • 相关阅读:
    GDB的Breakpoint, Watchpoint和Catchpoint
    sed初学
    比较两个文本不同的行/比较两个文本相同的行
    sprintf()函数基本用法
    vim不用鼠标复制粘贴
    SQL基础-语法
    SQL基础-简介
    XPath学习笔记
    jQuery选择器
    Ubuntu常用命令
  • 原文地址:https://www.cnblogs.com/csj007523/p/14418103.html
Copyright © 2020-2023  润新知