[Mental Studio]猛禽[Blog]
在上篇《用Delphi实现动态代理(1):概述》中,对动态代理作了一个概要的说明,比如为什么需要这样的动态代理,它有什么用等。本篇将对我实现的这个动态代理的设计思路作一下介绍。
一、设计目标
如上篇中这幅动态代理结构图所示:
大致的设计目标有以下几项:
TMDynamicProxy可以将任意接口代理到一个通用接口IMInvocationHandler上; IMInvocationHandler的实现不能太复杂,即TMMethodInvocation的定义要尽量简单; IMInvocationHandler要能够实现Remoting,即TMMethodInvocation必须可序列化; 需要一个IMMethodInterceptor接口,以便于实现AOP所需要的各种拦截器; 需要一个TMInterfaceInvoker来把IMInvocationHandler转为正确的对象调用。从上面列出的目标可以看出,我的目标是要实现一套全新的多层框架,并且几乎是对JAVA世界里最流行的轻量容器的模仿。接下来就说明一下原因所在。
二、原因
我之所以对这个动态代理如此热情,源自于对DELPHI下多层技术的愤怒。想想从前在DELPHI开发多层应用有些什么?MIDAS?不可否认,MIDAS是一项很优秀的开发技术,可以在很大程度上简化多层应用的开发。但是正因为它的简单化,所以它跟RAD一样,容易让人在简单化中迷失,而看不到问题的本质--对于这种事情,我喜欢引用老郑的一个经典比喻:就像比基尼泳装,它展示了令人感兴趣的部分,但却隐藏了关键的部分
本文地址:http://com.8s8s.com/it/it4280.htm