Decorator实现AOP编程。
Program.cs
class Program { static void Main(string[] args) { User user = " }; var processor = TransparentProxy.Create<UserProcessor>(); processor.Shopping(user); Console.ReadLine(); } }
User.cs
public class User { public string Name { get; set; } public string Password { get; set; } }
IUserProcessor.cs
public interface IUserProcessor { void Shopping(User user); }
UserProcessor.cs
public class UserProcessor : IUserProcessor { public void Shopping(User user) { Console.WriteLine("买呀,买呀,买苹果!"); } }
UserDecoratorProcess.cs
public class UserDecoratorProcess : IUserProcessor { private IUserProcessor processor; public UserDecoratorProcess(IUserProcessor processor) { this.processor = processor; } public void Shopping(User user) { PreShopping(); processor.Shopping(user); PostShopping(); } private void PreShopping() { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("买东西前,判断是否注册了!"); Console.ResetColor(); } private void PostShopping() { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("买完东西后,写个日志文件!"); Console.ResetColor(); } }
Decorator实现AOP编程。的更多相关文章
- 【原】iOS动态性(三) Method Swizzling以及AOP编程:在运行时进行代码注入
概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...
- 使用spring方式来实现aop编程
1:什么是aop? Aspect Oriented Programming 面向切面编程 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译 ...
- Spring学习笔记之四----基于Annotation的Spring AOP编程
你能使用@Aspect annotation将某个Java类标注为Aspect,这个Aspect类里的所有公有方法都可以成为一个Advice,Spring提供了5个Annotation去将某个方法标注 ...
- 聊Javascript中的AOP编程
Duck punch 我们先不谈AOP编程,先从duck punch编程谈起. 如果你去wikipedia中查找duck punch,你查阅到的应该是monkey patch这个词条.根据解释,Mon ...
- 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--AOP编程
AOP编程在目前来说好像是大家都比较喜欢的.ASP.NET MVC中的Filter就是使用AOP实现的配置器模式.AOP在编码中的应用主要有如下几个方面: 日志记录,跟踪,优化和监控 事务的处理 持久 ...
- Python Decorator 和函数式编程
看到一篇翻译不错的文章,原文链接: Python Decorator 和函数式编程
- struts2.1笔记03:AOP编程和拦截器概念的简介
1.AOP编程 AOP编程,也叫面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容.利用A ...
- Method Swizzling以及AOP编程:在运行时进行代码注入-备用
概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...
- Aop编程--注解与xml的实现
一.注解方式 1.首先引入spring对于aop编程的jar支持包,spring框架没有的包请自行在网上下载. aopalliance-alpha1.jar aspectjrt.jar aspectj ...
随机推荐
- 在APACHE服务器上的访问方式上去除index.php
在APACHE服务器上的访问方式上去除index.php 下面我说下 apache 下 ,如何 去掉URL 里面的 index.php 例如: 你原来的路径是: localhost/index ...
- MVB帧
MVB帧有两种类型: 1.仅有总线主发布的主帧: 2.从设备相应主帧而发送的从帧: 一个主帧及其相应的从帧形成一个报文. 主帧起始分界符和从帧起始分界符是不同的,以防止同步滑移 主帧的长度 ...
- 推荐一个实用的css工具
后台程序员整天在和数据打交道,天天的活就是抱着mysql抠数据,如果让他去写网站的样式,就让人感觉力不从心,所以推荐一个twitter的团队开发的东西,几乎囊括了网站所需的样式,http://www. ...
- 使用CSS3线性渐变实现图片闪光划过效果
<p class="overimg"> <a><img src="http://www.nowamagic.net/librarys/ima ...
- jquery 单击和双击事件冲突解决方案
先看一下点击事件的执行顺序: 单击(click):mousedown,mouseout,click: 双击(dblclick):mousedown,mouseout,click , mousedown ...
- struts文件上传、文件下载
文件上传 如果在表单中上传文件,表单的enctype属性为multipart/form-data struts默认上传文件大小为2M,如果需要修改,在配置文件中设置 <constant name ...
- 使用git删除远程仓库文件
git rm -r -f --cached 文件或文件夹 git commit -m "移除文件或文件夹" git push origin master 注意:要删除的文件或文件夹 ...
- 如何解决前端传来的时间格式与mysql表中时间格式不匹配的查询问题
前端传过来的时间格式为“2016-07-11 11:13:10”,而数据表中对应字段`add_time`的格式为“2016-7-11”,此时sql不能直接用 "where `add_time ...
- C# 版本的冒泡排序,包括该死的控制台读取
期末出成绩了,绩点被数分拉下来太多,虽然我很想不在意,但是还是受不了 学了两天的JAVA了,无爱,还是喜欢C#,喜欢VS 一直学一下控制台读取来着,但是C#控制台读取真的很麻烦 using Syste ...
- 0-1背包问题python解决
def f(i,j): while i>=0: if i==0 and j>=l[i][0]: return l[i][1] elif i==0 and j<l[i][0]: ret ...