14:高级篇 - CTK 服务工厂 简述

Posted 一去丶二三里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了14:高级篇 - CTK 服务工厂 简述相关的知识,希望对你有一定的参考价值。

作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员

一般情况下,服务对象在被注册之后,任何其它的 Plugin 在请求该服务时,CTK Plugin Framework 都返回的是同一个对象。倘若要为每一个 Plugin 消费者返回不同的服务对象,或者在真正需要该服务对象时才创建,这时该怎么办?

针对这些情况,CTK Plugin Framework 提供了现成的解决方案 - ctkServiceFactory。通过实现 ctkServiceFactory 接口,将该类的对象注册为服务(不是注册实际的服务对象),当 Plugin 请求该服务时,ctkServiceFactory 实现类将接管该请求,分别为每个 Plugin 提供一个实际的服务对象。

服务工厂

使用 ctkServiceFactory,有很多好处:

  • 有时 Service 需要知道是哪个 Plugin 在使用它(例如:LogService,需要在日志中记录哪个 Plugin 调用了它)。
  • 延迟初始化 Service(延迟服务对象的创建,直到真正需要它们为止)。
  • 对消费者透明(消费者不知道提供服务的是普通 Service 还是 ctkServiceFactory)。
  • 可以创建多种服务,根据参数 ctkServiceRegistration 来判断。

ctkServiceFactory 定义如下:<

以上是关于14:高级篇 - CTK 服务工厂 简述的主要内容,如果未能解决你的问题,请参考以下文章

11:高级篇 - CTK 事件管理机制(插件间通信)

12:高级篇 - CTK 事件管理机制(sendEvent/postEvent)

16:高级篇 - CTK 服务追踪

13:高级篇 - CTK 事件管理机制(signal/slot)

17:高级篇 - 访问 CTK 服务的最佳方式

CTK-使用ctk框架完成日志打印界面插件