[MyBean-说明书]关于插件的单件模式(singleton),插件的共享模式

简介: 【说明】 单件模式是一种用于确保整个应用程序中只有一个类实例。 想想我们的系统中有哪些方面可以应用到单件模式,比如大家常说的连接(ADOConnection)共享,其实就是指的单件模式。       【MyBean中的单件模式】 MyBean中插件一旦成为单件模式,框架就会帮你接管对象的生命周期。

【说明】

单件模式是一种用于确保整个应用程序中只有一个类实例。

想想我们的系统中有哪些方面可以应用到单件模式,比如大家常说的连接(ADOConnection)共享,其实就是指的单件模式。

 

 

 

【MyBean中的单件模式】

MyBean中插件一旦成为单件模式,框架就会帮你接管对象的生命周期。你每次调用getBean都只会产生一份实例,也就是说对象只会创建一次,不管是窗体插件还是无UI的逻辑插件。

MyBean中可以通过两种方式使插件成为单件模式。

1.最简单的一种是注册的时候,参数选定为单件模式,也是最简单明了的一种方式。

 

library diocp_bean;

uses
  SysUtils,
  Classes,
  mybean.core.beanFactory,
  uRemoteServerDIOCPImpl in '..\..\Service\uRemoteServerDIOCPImpl.pas';

{$R *.res}

begin
  beanFactory.RegisterBean('diocpRemoteSvr', TRemoteServerDIOCPImpl).Singleton := true;
end.

 

2.通过配置文件可以配置插件为单据模式:

假如上面的插件注册的是普通的模式,而且这个插件你没有源码,你想直接使用,又想是单件模式怎么办?你可以使用配置文件达到

//  如果注册是这样的, beanFactory.RegisterBean('diocpRemoteSvr', TRemoteServerDIOCPImpl)
{
   list:
   [
      {
         "id":"dbSERVER",              //getBean的时候的参数
         "pluginID":"diocpRemoteSvr",  //如果与id一致可以进行忽略
         "lib":"diocp_bean.dll",       //宿主文件名
         "singleton":true,             //单件模式
         "config":
          {
              "host":"127.0.0.1",
              "port":9983
          }
      },
      {
         "id":"imSERVER",              //getBean的时候的参数
         "pluginID":"diocpRemoteSvr",  //如果与id一致可以进行忽略
         "lib":"diocp_bean.dll",       //宿主文件名
         "singleton":true,             //单件模式
         "config":
          {
              "host":"127.0.0.1",
              "port":9985
          }
      },
   ]
}

可以看出上面调用的时候可以完成2个插件,他们使用的实现都是一样的,想想如果我们有两个数据库连接,一个连接业务数据库,一个连接配置数据库,其实他们的实现是一样的,只是连接的地址和端口不一样。

 

【单件模式的应用】

单件模式在MyBean可以引用比较广泛,系统中只需要一个主窗体,有的选取窗体也只需要一个等等。。。大家可以想想你项目中的单件模式,之前是怎么样处理的

目录
相关文章
|
8月前
|
设计模式
单例设计模式步骤
单例设计模式步骤
37 1
|
4月前
|
缓存 安全 Java
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
从底层源码入手,通过代码示例,追踪AnnotationConfigApplicationContext加载配置类、启动Spring容器的整个流程,并对IOC、BeanDefinition、PostProcesser等相关概念进行解释
354 24
|
8月前
|
XML Java 数据格式
简单上手SpringBean的整个装配过程
在Spring6中定义一系列独立的bean定义出发,进而构建出一个对象间相互协作以达成目标的完全成型的应用程序。
55 2
|
Java Spring 容器
Spring框架:第三章:对象的生命周期及单例bean生命周期的11个步骤
Spring框架:第三章:对象的生命周期及单例bean生命周期的11个步骤
127 0
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(七)
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(七)
131 1
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(七)
探秘static——类不需实例化就能用?
一般情况下,需要用到某个类的时候,都必须先实例化这个类,才能对其进行调用。在编程过程中发现,有些类不用实例化就可以直接拿来使用,使用它的字段、方法等等。
探秘static——类不需实例化就能用?
|
XML 编解码 缓存
6种常用Bean拷贝工具一览
6种常用Bean拷贝工具一览
647 0
6种常用Bean拷贝工具一览
|
XML 数据格式
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(一)
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(一)
118 0
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(一)
|
XML 数据格式
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(三)
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(三)
130 0
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(三)
|
XML Java 数据格式
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(四)
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(四)
117 0
SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(四)