【说明】

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

想想我们的系统中有哪些方面可以应用到单件模式,比如大家常说的连接(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可以引用比较广泛,系统中只需要一个主窗体,有的选取窗体也只需要一个等等。。。大家可以想想你项目中的单件模式,之前是怎么样处理的

[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. Docker运行python容器

    容器是镜像运行的实例,而镜像保存在仓库里,测试或者发布生产环境只需要pull下来即可,相对传统的应用部署,能很好的保持环境的一致,节省运维时间.最近公司内部的java和.net服务也已经全部容器化,实 ...

  2. ios中键盘处理(二)

    设置UIscrollview的背景代码 - (UIImage *) ImageWithColor: (UIColor *) color frame:(CGRect)aFrame { UIGraphic ...

  3. Linux-TCP 出现 RST 的几种情况

    导致“Connection reset”的原因是服务器端因为某种原因关闭了Connection,而客户端依然在读写数据,此时服务器会返回复位标志“RST”,然后此时客户端就会提示“java.net.S ...

  4. Linux中的lo回环接口详细介绍

    1.linux的网络接口之扫盲 (1)网络接口的命名 这里并不存在一定的命名规范,但网络接口名字的定义一般都是要有意义的.例如: eth0: ethernet的简写,一般用于以太网接口. wifi0: ...

  5. Agile Development敏捷软件开发之何为敏捷开发

    敏捷软件开发之何为敏捷开发 敏捷开发,Agile Development,就是指能够在需求迅速变化的情况下快速开发软件.我们接触最多敏捷实践方式有:极限编程(XP).结对编程.测试驱动开发(TDD)等 ...

  6. php加密总结

    1.md5加密,加密之后是32位的字符串 2.sha1加密, 加密之后是40位的字符串 3.crypt加密, 加密之后是13位的字符串 上面是不可逆的 可逆的如下urlencode --> ur ...

  7. Xcode 常用插件

    1.Xcode 插件 从 Xcode 8 起 Apple 禁用 Xcode 插件. 1)Xcode 插件安装目录 ~/library/Application Support/Developer/Sha ...

  8. 【Android开发】之Fragment生命周期

    上一篇博客我们讲到了,Fragment的基本使用,相信大家都已经了解怎么去使用了.如果还有不懂得同学可以去看一下,传送门.现在我们来讲解一下Fragment的生命周期. 一.Fragment的事务 再 ...

  9. 'Agent XPs' component is turned off as part of the security configuration for this server

    To turn on Agent XP's by running this script: sp_configure 'show advanced options', 1; Go RECONFIGUR ...

  10. WSAAsyncSelect模型触发不了FD_Close消息?

    原帖链接: http://bbs.csdn.net/topics/330164174 楼主: Server用WSAAsyncSelect模型,Client关闭程序时(不进行shutdown与close ...