zoukankan      html  css  js  c++  java
  • 基于装饰器模式的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就粉墨登场了!

  • 相关阅读:
    正则匹配
    curator.zookeeper
    linux tail 命令查看日志 并加上颜色
    k8s一些命令
    k8s文件传递及scp
    Linux下如何在不解压jar包查看或修改配置文件
    MySQL教程之concat以及group_concat的用法
    JavaCV读取流设置超时
    学习html5 canvas 圆环
    jquery使用$.each()
  • 原文地址:https://www.cnblogs.com/kingge/p/2216108.html
Copyright © 2011-2022 走看看