zoukankan      html  css  js  c++  java
  • 插件架构的原理及实现探讨

    鄙人乃码农,不善辞藻,遂采用一问一答式,试图解开插件架构之谜雾。此次只讲原理不上码。
    什么叫插件?
    此处不作解释。
    插件的分类?
    插件粗分为可视插件和非可视插件。
    插件的存在形态?
    插件最终静静地持久在磁盘的某个文件中。在DELPHI中插件以.dll和.bpl俩种扩展名的文件存在。
    插件的加载和释放?
    插件既有生(加载)亦有死(释放)。bpl插件和dll插件的加载和释放都有所不同,要具体对待。
    如何判断是哪一种插件?
    通过判断插件文件的扩展名可以知道是哪一种插件。在DELPHI中插件的扩展名不是<.dll>就是<.bpl>。
    插件框架的组成?
    由一个插件的加载程序和N个插件组成。它们都是单独的工程,这些工程们组成一个庞大的工程组。
    插件的加载程序?
    它是一个可执行程序,由它来开辟一块进程空间,由它负责加载插件们进它的进程空间里面。
    插件的粒度?
    一个插件可以只包含一个功能模块,也可以包含N个功能模块。每一个功能模块都是类(窗体类)。
    这些窗体类有些是可视的,有些是非可视的。如果一个插件只包含一个可视的窗体类,我们叫它
    可视插件?
    如何封装插件的功能模块?
    可视插件和非可视插件都可以使用窗体作为插件的容器。如果是可视插件,让窗体容器创建后显示;
    如果是非可视插件让窗体容器创建后隐藏。例子:DELPHI就是用非可视窗体作容器封装线程。
    如何调用插件中的功能模块?
    通过指针。插件.句柄-->统一的接口.统一的方法(参数们)
    插件和插件加载程序之间的契约?
    各插件和插件加载程序都必须遵守:统一的接口.统一的方法(参数们)。
     
  • 相关阅读:
    Linux修改root密码报错
    Python中的排序---冒泡法
    Python随机数
    Python中的深拷贝和浅拷贝
    Couldn’t download https://raw.githubusercontent.com/certbot/certbot/ 问题解决
    Python内置数据结构----list
    Python内置数据结构
    Vue指令
    computed 和 watch
    Vue的数据响应式
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/3261697.html
Copyright © 2011-2022 走看看