zoukankan      html  css  js  c++  java
  • 【MyBean-开源框架】进行简单的逻辑插件(演示在控制台中应用)

    【说明】

    很多时候大家认为客户端插件一般是窗体。其实不然,很多功能都可以看成是插件,比如一个单据的审批功能,一个单据上面,单价的获取功能,都可以看成是插件,然后后期通过配置,可以灵活进行切换。MyBean支持这种插件,支持这种纯逻辑的插件。剩下的是需要自己去制定执行逻辑的协议,这个DEMO就是展示如果进行逻辑插件的编写。

    【DEMO设计】

    该DEMO在调用DLL的一个插件完成两个简单数字的简单合计,然后可以由其他插件调用日志插件输出功能。

    先制定接口协议(uILogic.pas):

    type
      /// <summary>
      ///   合计插件接口
      /// </summary>
      ISumExp = interface(IInterface)
        ['{D02C3764-1231-46EC-8C74-95DFBF2A1ED5}']
        function sum(i:Integer; j:Integer):Integer; stdcall;
      end;
    
      /// <summary>
      ///   日志插件接口
      /// </summary>
      IMyBeanLogger = interface(IInterface)
        ['{B872909D-99FF-47B9-A3F9-8CB9C26A8FD5}']
        procedure LogMessage(s: PAnsiChar); stdcall;
      end;

    2.注册日志插件, 由EXE提供实现,在EXE中注册日志插件(uMyBeanLoggerImpl.pas)。

    initialization
      ///注册日志插件
      beanFactory.RegisterBean('mybeanLogger', TMyBeanLoggerImpl);

    3.逻辑插件的实现(ISumExp接口的实现)

    function TSumExpImpl.sum(i, j: Integer): Integer;
    begin
      Result := i + j;
    
      (TMyBeanFactoryTools.getBean('mybeanLogger') as IMyBeanLogger).LogMessage('dll插件调用mybeanLogger插件,输出一些信息');
    end;

    4.注册逻辑插件

    library logicBean;
    
    uses
      SysUtils,
      mybean.core.beanFactoryForNoVcl,
      Classes,
      uSumExpImpl in 'uSumExpImpl.pas',
      uILogic in '..commonuILogic.pas';
    
    {$R *.res}
    
    begin
      beanFactory.RegisterBean('sumExp', TSumExpImpl);
    end.

    5.编译出来的DLL和EXE放一起就可以运行了

    image

    该DEMO只是抛砖,想想自己的系统中可以把哪些功能做成逻辑插件……

  • 相关阅读:
    c3p0连接池c3p0-config.xml配置文件各属性的意义
    MVC案例-架构分析
    jsp中文乱码
    JSP标签
    JSP_include指令
    JavaWeb_请求转发
    JavaWeb_域对象的属性操作
    JavaWeb_JSP语法
    345. Reverse Vowels of a String
    541. Reverse String II
  • 原文地址:https://www.cnblogs.com/DKSoft/p/3970543.html
Copyright © 2011-2022 走看看