bpl插件系统开发(5)

在这样的构想下,我们来做一个demos,

我们来定义如下的被IMisDriver驱动的接口,加入现在能想到的简单的应用,我们要作的工作如下

   1. 定义被驱动的接口
   2. 撰写 IMisDriver的一个实现,用它来驱动各个接口,IMisDriver通过调用TPluginLoader的获得接口实例.
   3. 撰写每个接口的实现,并生成多个bpl
   4. 用TPluginLoader来载入这些插件,
   5. 主程序,实例化一个 TPluginLoader,然后取得IMisLoader的实例,运行它.

我们先来完成第一步

unit InterfaceDefine;

interface

uses DBClient, midasLib, Types, classes;

type

    ITracer = interface
        ['{623B3A22-15CE-4555-B470-C3F4EBEE7EB4}']
        procedure info( const msg: string );
        procedure error( const msg: string );
        procedure debug( const msg: string );
    end;

    ILogin = interface
        ['{082F9C02-B504-4417-ACEB-1C9E3410ADED}']
        procedure login( const user, pwd: string );
        function loginByCookie( const user, pwd: string ): string;
    end;

    IUserInfo = interface
        ['{4DE53541-6FC3-44C7-BA27-49B0827625F0}']
        function information: TObject;
    end;

    IAuthentic = interface
        ['{0E4BCF53-D685-4AC8-9C38-614117E59365}']
        procedure valid( const actionId: string );
        procedure config;
     end;

    IDataService = interface
        ['{722CE946-1F59-4C67-A0EA-6655F1B1D961}']
        procedure beginTrans;
        procedure commitTrans;
        procedure rollbackTrans;

        function doSelectSql( const theSql: string ): TClientDataset;
        function doSelectValue( const theSql: string ): string;
        procedure doUpdateSql( const delta: string );
        procedure doUpdateSqls( const deltas: TStringDynArray );

    end;

    IShortcutDispather = interface
        ['{A2C08C9E-5B56-4DC9-934B-323CAEC1FF49}']
        function actionOf( const input: TShortCut ): string;
        procedure config;
    end;

    IProcessData = interface
        ['{9368710D-7240-466A-8BCF-0D8B2FF0502D}']
        function process( var theData: TClientDataSet );
    end;

    IActionManager = interface
        ['{0FEE643C-7610-4442-9EB7-5D21A433788A}']
        function processerOf( action: string ): IProcessData;

    end;

    IView = interface( IProcessData )
        ['{5F0000F8-7A9D-4824-915C-20A95A7B01F4}']
        procedure View( var theData: TClientDataSet );
    end;

    IReport = interface( IProcessData )
        ['{DD5A8AE6-37D9-4B9F-A2C9-9BEA9F217F90}']
        procedure report( var theData: TClientDataSet );
    end;

implementation

end.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值