AOP

// 最开始我们都是OPO编程(也就是面向过程编程)
// 后来转变成为了OOP编程 (也就是面向对象编程)但是在OOP的内部实际上也还是面向过程(OPO)
// OOP是对扩展开放。对修改关闭.因为OOP的最小单位实际是类。所以扩展实现功能的时候 百分之八十都是 类与类的替换 来完成的
// 比如工厂, IOC DI注入 等
// 如果因为扩展实现功能的时候在类的内部进行修改的话,就违背了,对扩展开放,对修改关闭的原则了。是不允许的。
// 可能通过实现不同类来完成需求,但是需求不是一层不变的 可能会有很多个不同的需求.
// 比如说 我要在方法内 加上try cath 加上日志 等扩展功能的话,实际上我们可以通过新建类,把这些加上去。
// 但是如果有一天 我需要对这些扩展功能实现 随意增减的话。可能就搞不定了
// 所以在不破坏现有封装,又能扩展新功能的基础上 就是面向切面编程 AOP

 

 

  ProxyGenerator proxyGenerator = new ProxyGenerator();
            CustomAttributeInterceptor customAttribute = new CustomAttributeInterceptor();
            IDBHelper dBHelper = new SqlServerDBHelper();
            var iDbHelperProxy=  proxyGenerator.CreateInterfaceProxyWithTarget<IDBHelper>(dBHelper, customAttribute);

            Console.WriteLine("当前类型:{0},父类型:{1}", iDbHelperProxy.GetType(), iDbHelperProxy.GetType().BaseType);
            Console.WriteLine();
            iDbHelperProxy.Save(new UserInfo()
            {
                Account = "12",
                Password = "123123",
                Name = "哥"
            });

  

posted @ 2022-06-13 17:51  法外狂徒派大星  阅读(102)  评论(0)    收藏  举报