• 基于装饰器模式的AOP


    /*****************************************************
    *CreateBy:joe zhou  
    *CreateDate:2011-10-18 
    *Description:装饰器模式实现的拦截器
    *****************************************************/
    using System;
    namespace T4Mvp
    {
        /// <summary>
        /// 组件接口
        /// </summary>
        public interface IComponent
        {
            /// <summary>
            /// 上下文对象
            /// </summary>
            object Context { get; }
    
            /// <summary>
            /// 核心执行方法
            /// </summary>
            void Execute();
        }
    
        /// <summary>
        /// 装饰器对象
        /// </summary>    
        public abstract class Decorator : IComponent
        {
            private object _context;
            private IComponent _decoratee;
    
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <exception cref="System.ArgumentNullException">参数为空时产生参数空异常</exception>
            protected Decorator(IComponent decoratee)
            {
                #region 参数检查
    
                if (decoratee == null)
                {
                    throw new ArgumentNullException("decoratee");
                }
    
                #endregion
    
                this._decoratee = decoratee;
                this._context = decoratee.Context;
            }
    
            #region 切点
    
            /// <summary>
            /// 执行之前调用
            /// </summary>
            protected abstract void Starting();
    
            /// <summary>
            /// 执行完成后调用
            /// </summary>
            protected abstract void Completed();
    
            #endregion
    
            #region IComponent 成员
    
            public object Context
            {
                get { return this._context; }
            }
    
            public void Execute()
            {
                Starting();
                this._decoratee.Execute();
                Completed();
            }
    
            #endregion
        }
    }
    

      关于为什么要用AOP?很多人总是说记日志,个人以为仅仅为了记日志使用AOP有点搞笑。我认为AOP的魅力在于我们有一个开发好的功能,后来发现功能不完善,需要做一些处理而又不愿意去修改原有的封装,这个时候AOP就粉墨登场了!

  • 相关阅读:
    Linux 下安装JDK1.8
    Linux 常规操作
    C3P0连接池拒绝连接
    Oracle查看并修改最大连接数
    Oracle 建立 DBLINK
    Oracle 数据 update后怎么恢复到以前的数据
    Oracle 11g中解锁被锁定的用户
    身份证15位转18位
    Druid数据库连接池
    CentOS 下安装 LEMP 服务(Nginx、MariaDB/MySQL 和PHP)
  • 原文地址:https://www.cnblogs.com/kingge/p/2216108.html
Copyright © 2020-2023  润新知