【说明】

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

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

【MyBean中的单件模式】

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

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

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

  1. library diocp_bean;
  2.  
  3. uses
  4. SysUtils,
  5. Classes,
  6. mybean.core.beanFactory,
  7. uRemoteServerDIOCPImpl in '..\..\Service\uRemoteServerDIOCPImpl.pas';
  8.  
  9. {$R *.res}
  10.  
  11. begin
  12. beanFactory.RegisterBean('diocpRemoteSvr', TRemoteServerDIOCPImpl).Singleton := true;
  13. end.

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

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

  1. // 如果注册是这样的, beanFactory.RegisterBean('diocpRemoteSvr', TRemoteServerDIOCPImpl)
  1. {
  2. list:
  3. [
  4. {
  5. "id":"dbSERVER", //getBean的时候的参数
  6. "pluginID":"diocpRemoteSvr", //如果与id一致可以进行忽略
  7. "lib":"diocp_bean.dll", //宿主文件名
  8. "singleton":true, //单件模式
  9. "config":
  10. {
  11. "host":"127.0.0.1",
  12. "port":9983
  13. }
  14. },
  15. {
  16. "id":"imSERVER", //getBean的时候的参数
  17. "pluginID":"diocpRemoteSvr", //如果与id一致可以进行忽略
  18. "lib":"diocp_bean.dll", //宿主文件名
  19. "singleton":true, //单件模式
  20. "config":
  21. {
  22. "host":"127.0.0.1",
  23. "port":9985
  24. }
  25. },
  26. ]
  27. }

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

【单件模式的应用】

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

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

  1. 单件模式Singleton来控制窗体被重复或多次打开

    本文转载:http://blog.csdn.net/a0700746/article/details/4473796 一般在百度搜一下,会出来一下内容,看来很好用.Singleton很方便的一个用处就 ...

  2. 设计模式 - 单件模式(singleton pattern) 具体解释

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/28595349 单件模式(singleton ...

  3. 8.2 GOF设计模式一: 单实例模式 SingleTon

    GOF设计模式一: 单实例模式 SingleTon  整个美国,只有一个“现任美国总统”  比如,在学校,“老师”,有数百个:“校长”,只有一个  系统运行时,如何保证某个类只允许实例化一个对象 ...

  4. H5使用codovar插件实现支付宝支付(支付宝APP支付模式,前端)

    H5打包的app实现支付及支付宝支付,本章主要详解支付宝支付,微信支付请查看另一篇“H5使用codovar插件实现微信支付(微信APP支付模式,前端)” ps:本文只试用H5开发的,支付宝 APP支付 ...

  5. H5使用codovar插件实现微信支付(微信APP支付模式,前端)

    H5打包的app实现微信支付及支付宝支付,本章主要详解微信支付,支付宝支付请查看另一篇“H5使用codovar插件实现支付宝支付(支付宝APP支付模式,前端)” ps:本文只试用H5开发的,微信 AP ...

  6. spring创建bean模式singleton与prototype的区别

    spring 创建bean有单例模式(singleton)和原始模型模式(prototype)这两种模式. 在默认的情况下,Spring中创建的bean都是单例模式的(注意Spring的单例模式与Go ...

  7. [MyBean说明书]-如何进行最简单的DEMO

    MyBean是轻量级的.绿色的框架,不需要安装任何的组件和携带任何的其他文件,前 期步骤已经相当精简了,仔细阅读完下面简单的五个步骤,就可以编写基于MyBean的插件: 1.加入Delphi的搜索路径 ...

  8. 单例/单体模式(Singleton)

    单例/单体模式(Singleton) 首先,单例模式是对象的创建模式之一,此外还包括工厂模式. 单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3, ...

  9. nginx 轮询模式 nginx_upstream_jvm_route 插件安装

    使用nginx_upstream_jvm_route插件的目的是为了保证在轮询机制下的session的共享 前提:源码方式安装nginx.patch命令 1.下载nginx_upstream_jvm_ ...

随机推荐

  1. tensorflow内存溢出问题

    Tensorflow的静态图结构简洁清晰,符合人的思维.虽然编程上略微有些复杂,但是原理很容易看懂. Tensorflow分建图过程和运行图(张量求值)两个阶段,在这两个阶段中都可以定义操作和张量.但 ...

  2. 图解 eclicpse 智能提示 配置

    输入的内容: “.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ” 第一步:   第二步:

  3. 为什么现在很多年轻人愿意来北上广深打拼,即使过得异常艰苦,远离亲人,仍然义无反顾? 谈谈程序员返回家乡的创业问题 利基市场就是那些不大不小的缝隙中的市场 马斯洛的需求无层次不适合中国。国人的需求分三个层次——生存、稳定、装逼。对应的,国内的产品也分三个层次——便宜、好用、装B。人们愿意为这些掏钱

    信念.思考.行动-谈谈程序员返回家乡的创业问题 昨天晚上在微博上看了篇 <为什么现在很多年轻人愿意来北上广深打拼,即使过得异常艰苦,远离亲人,仍然义无反顾?>,有些话想说. 感觉很多人的担 ...

  4. 软件公司的两种管理方式 总体来说,这个世界上存在两种不同的软件公司的组织结构。我把他们叫做 Widget Factory(小商品工厂) 和 Film Crews(电影工作组

    软件公司的两种管理方式 一个简单的回答应该是——“因为在我们的社会里,我们总是会认为薪水和会和职位的层次绑在一起”.但是,这个答案同时也折射出一个事实——我们的薪资是基于我们的所理解的价值,但这并没有 ...

  5. POJ 2337 Catenyms (欧拉回路)

    Catenyms Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8173   Accepted: 2149 Descript ...

  6. mysql - tmp_table_size & max_heap_table_size

    Command-Line Format --tmp_table_size=# System Variable Name tmp_table_size Variable Scope Global, Se ...

  7. 【转】我的第一次和最后一次 Hackathon 经历

    我的第一次和最后一次 Hackathon 经历 在旧金山地区经常有一些叫做“Hackathon”的活动,吸引挺多人参加.我一直听说这个名字,可是一直不知道它到底是什么.我从来对竞赛式的活动不感兴趣,我 ...

  8. MPU6050陀螺仪和加速度计的校准

    加速度计和陀螺仪的校准: 在传感器静止不动水平放置时,测出陀螺仪和加速度计各轴的偏移值,保存.以后每次上电调用dmp_set_xx_bias()就行了. u8 run_self_test(void) ...

  9. Android 上传文件,图片。以及服务器端接收相关。

    前面一篇文章写了实现照相功能的一个例子,其实那个实现效果是个略缩图.要查看全图就要先指定照片的存放路径.以后我会修改那个文章.今天先说下图片,文件等上传的实现.接着拿照片说事,光照完了不行还得往服务器 ...

  10. Jacobi并行拆解【补充】

    作者:桂. 时间:2018-04-24  22:04:52 链接:http://www.cnblogs.com/xingshansi/p/8934373.html 前言 本文为Jacobi并行拆解一文 ...