七种结构型设计模式之代理模式和适配器模式

代理模式和适配器模式!代码看起来都差不多!都是把业务逻辑包一层,然后在业务逻辑的进出口,实现一些通用的业务逻辑!比如说通用逻辑、日志、异常处理、安全、缓存、延迟、权限、事务、远程。

在.net core 中,代理所使用的和继承的类!是通过继承:     

                          DispatchProxy 类来实现代理

下面是简单的动态AOP代理模式:

using System;

namespace 测试AOP动态代理
{
    class Program
    {
        static void Main(string[] args)
        {
            IDbContext dbContext = new SqlServerProxy();
            dbContext = TranProxy.Create<IDbContext>(dbContext);
            dbContext.SqlServer("id");
            Console.WriteLine();
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace 测试AOP动态代理
{
    public class MyRealProxy<T> : DispatchProxy
    {
        public T _Instance = default(T);
        public int b = 0;
        protected override object Invoke(MethodInfo? targetMethod, object?[] args)
        {
        //可以在这个方法执行的前后!添加所需要执行的方法比如说通用逻辑、日志、异常处理、安全、缓存、延迟、权限、事务、远程。
var sss = targetMethod.Invoke(this._Instance, args); return sss; } } public static class TranProxy { public static T Create<T>(T t) { dynamic tProxy = DispatchProxy.Create<T,MyRealProxy<T>>()!; tProxy!._Instance = t; tProxy!.b = 99; return tProxy; } } }

如果你要非动态!这个就更简单了!直接new 就行了!包一层!然后在方法执行的前后!实现你需要的通用逻辑!

posted @ 2021-11-15 10:22  仲夏不凉爽  阅读(38)  评论(0编辑  收藏  举报