当前位置: 代码迷 >> 综合 >> 用Delphi实现动态代理(2):设计说明
  详细解决方案

用Delphi实现动态代理(2):设计说明

热度:41   发布时间:2023-12-09 15:25:22.0

用Delphi实现动态代理(2):设计说明

[Mental Studio]猛禽[Blog]

在上篇《用Delphi实现动态代理(1):概述》中,对动态代理作了一个概要的说明,比如为什么需要这样的动态代理,它有什么用等。本篇将对我实现的这个动态代理的设计思路作一下介绍。
 

一、设计目标

如上篇中这幅动态代理结构图所示:

大致的设计目标有以下几项:

  • TMDynamicProxy可以将任意接口代理到一个通用接口IMInvocationHandler上;
  • IMInvocationHandler的实现不能太复杂,即TMMethodInvocation的定义要尽量简单;
  • IMInvocationHandler要能够实现Remoting,即TMMethodInvocation必须可序列化;
  • 需要一个IMMethodInterceptor接口,以便于实现AOP所需要的各种拦截器;
  • 需要一个TMInterfaceInvoker来把IMInvocationHandler转为正确的对象调用。

从上面列出的目标可以看出,我的目标是要实现一套全新的多层框架,并且几乎是对JAVA世界里最流行的轻量容器的模仿。接下来就说明一下原因所在。
 

二、原因

我之所以对这个动态代理如此热情,源自于对DELPHI下多层技术的愤怒。想想从前在DELPHI开发多层应用有些什么?MIDAS?不可否认,MIDAS是一项很优秀的开发技术,可以在很大程度上简化多层应用的开发。但是正因为它的简单化,所以它跟RAD一样,容易让人在简单化中迷失,而看不到问题的本质--对于这种事情,我喜欢引用老郑

  相关解决方案