2.静态AOP实现-装饰器模式
通过装饰器模式实现在RegUser()方法本身业务前后加上一些自己的功能,如:BeforeProceed和AfterProceed,即不修改UserProcessor类又能增加新功能
- 定义1个用户接口,里面有个注册用户方法
- public interface IUserProcessor
- {
- void RegUser(User user);
- }
- 实现用户这个接口
- public class UserProcessor : IUserProcessor
- {
- public void RegUser(User user)
- {
- Console.WriteLine("用户已注册。Name:{0},PassWord:{1}", user.Name, user.Password);
- }
- }
装饰器的模式去提供一个AOP功能
- /// <summary>
- /// 装饰器的模式去提供一个AOP功能,既有继承,又有组合
- /// </summary>
- public class UserProcessorDecorator : IUserProcessor//继承
- {
- private IUserProcessor _UserProcessor { get; set; }//组合
- public UserProcessorDecorator(IUserProcessor userprocessor)//通过构造函数的传入
- {
- this._UserProcessor = userprocessor;
- }
- public void RegUser(User user)
- {
- BeforeProceed(user);//在本身业务之前加入一些逻辑
- this._UserProcessor.RegUser(user);//调用构造函数传入的对象执行本身的业务逻辑
- AfterProceed(user);//在本身业务之后加入一些逻辑
- }
- /// <summary>
- /// 业务逻辑之前
- /// </summary>
- /// <param name="user"></param>
- private void BeforeProceed(User user)
- {
- Console.WriteLine("方法执行前");
- }
- /// <summary>
- /// 业务逻辑之后
- /// </summary>
- /// <param name="user"></param>
- private void AfterProceed(User user)
- {
- Console.WriteLine("方法执行后");
- }
- }
- 调用
- public static void Show()
- {
- User user = new User()
- {
- Name = "Eleven",
- Password = "
- };
- IUserProcessor processor = new UserProcessor();
- processor.RegUser(user);
- Console.WriteLine("***************");
- processor = new UserProcessorDecorator(processor);//即不修改UserProcessor类又能增加新功能
- processor.RegUser(user);
- }
2.静态AOP实现-装饰器模式的更多相关文章
- 聊聊模板方法模式,装饰器模式以及AOP
在软件系统设计的时候,我们需要把一个大的系统按照业务功能进行拆分,做到高内聚.低耦合. 但是呢,拆分之后会产生一些通用性的东西,比如日志,安全,事务,性能统计等,这些非功能性需求,横跨多个模块.最lo ...
- 20181122_C#中AOP初探_装饰器模式的AOP_Remoting实现AOP_Castle实现AOP
一. 什么是AOP: a) AOP是面向切面编程; 就像oop一样, 它也是一种编程思想; i. Oop思想→一切皆对象, 对象交互组成功能, 功能叠加组成模块, 模块叠加组 ...
- 设计模式学习心得<装饰器模式 Decorator>
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装 ...
- Java设计模式12:装饰器模式
装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...
- 设计模式(八)装饰器模式Decorator(结构型)
设计模式(八)装饰器模式Decorator(结构型) 1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性.如果已经存在的一个类缺少某些方法 ...
- java设计模式之七装饰器模式(Decorator)
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个 ...
- java之装饰器模式
Decorator Pattern(装饰器模式),定义:Attach additional responsibilities to an object dynamically. Decorators ...
- JAVA设计模式--装饰器模式
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...
- php设计模式八-----装饰器模式
1.介绍: 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...
随机推荐
- Android AsyncTask将讲解
原型:AsyncTask<Params, Progress, Result> Params 表示传入参数类型 Progress表示处理参数类型 Result表示返回类型 new Async ...
- 从web到搭建ssm环境
1:我先建立了个web项目, (1)在pom.xml中添加了如下 <dependencies> <!-- Spring --> <depend ...
- Java 字符编码 ASCII、Unicode、UTF-8、代码点和代码单元
1 ASCII码 统一规定英语字符与二进制位之间的关系.ASCII码一共规定了128个字符的编码.例如,空格“SPACE”是32(二进制00100000),大写字母A是65(二进制01000001). ...
- Hibernate简答题
简单题目 1.持久化对象的三种状态,代表含义. 自由状态(transient): 不曾进行持久化,未与任何Session相关联 持久化状态(persistent): 仅与一个Session相关联 游离 ...
- PAT基础6-8
6-8 简单阶乘计算 (10 分) 本题要求实现一个计算非负整数阶乘的简单函数. 函数接口定义: int Factorial( const int N ); 其中N是用户传入的参数,其值不超过12.如 ...
- Vue(十四)过渡(动画)
过渡(动画) 1. 简介 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果 本质上还是使用CSS3动画:transition.animation 2. 基本用法 使用trans ...
- 【二维树状数组】计数问题 @JSOI2009/upcexam5911
时间限制: 1 Sec 内存限制: 128 MB 题目描述 一个n*m的方格,初始时每个格子有一个整数权值.接下来每次有2种操作: 改变一个格子的权值: 求一个子矩阵中某种特定权值出现的个数. 输入 ...
- Java全栈程序员之05:Ubuntu下安装TOMCAT、集成到IDEA
使用idea绝不是开发一个Hello World这么简单,现在我们要使用idea进行企业级开发(也就是JavaEE)的准备了,那么首先,我们就得有一个web应用服务器.选什么呢?当然首选是大名鼎鼎的T ...
- JS实现网站内容的禁止复制和粘贴、另存为
1.使右键和复制失效方法1:在网页中加入以下代码: <script language="Javascript"> document.oncontextmenu=new ...
- sql格式化并高亮
演示地址: https://ryan-miao.github.io/sql-format-with-highlight/index.html 源码: https://github.com/Ryan-M ...