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

本文介绍了用Delphi实现动态代理的设计思路,旨在提供一套全新的多层框架,模仿JAVA的轻量级容器。设计目标包括将任意接口代理到IMInvocationHandler,实现简单化的IMInvocationHandler和Remoting,以及提供AOP所需的拦截器。文中讨论了Delphi现有多层技术的局限性,并阐述了模仿JAVA动态代理的原因,以实现非侵入性和更好的灵活性。
摘要由CSDN通过智能技术生成

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

[Mental Studio]猛禽[Blog]

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

一、设计目标

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

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

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

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

二、原因

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

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值