C++ modularization framework (like OSGI)? 有没有类似OSGI的c++模块化框架?

28 篇文章 0 订阅

C++ modularization framework (like OSGI)?

有没有类似OSGI的c++模块化框架?

OSP:

The authors of the open source Portable Components library (POCO) have also developed a modular framework based on OSGI called OSP or Open Service Platform.http://www.appinf.com/en/products/osp.html. It's not open source however.

POCO的作者开发的一个基于OSGI的模块化框架,叫OSP或Open Service Platform,但是没有开源。

Blueberry and ctk:

There is also BlueBerry http://www.blueberry-project.org which implements a component based framework inspired by OSGi. It also comes with an application framework similar to the Eclipse RCP.

A rewrite of the BlueBerry core can be found in the CTK PluginFramework library (based on Qt Core):Introduction, GitHub Code .

BlueBerry是一个组件框架,开发灵感来自于OSGI。它也带有一个类似的Eclipse RCP的应用框架。

CTK插件框架重写了BlueBerry的核心,它基于QT core。

 qt:

I've never seen a solution to the whole problem, but I implemented something similar usingQt plugins.

The part Qt did nicely (that C++ by itself doesn't implement) was handling C++ OO interfaces in dynamically loadable modules. Because of C++ name-mangling being non-standard, usually DLLs don't have C++ interfaces, only C interfaces. Qt did it with it's meta-object system, and it worked really cleanly for me.




Android模块化设计思想是将整个项目按照业务模块进行逻辑的划分,将不同的业务模块拆分成独立的模块,每个模块都有自己的功能和职责,可以独立开发、测试、编译和部署。这种设计思想可以提高应用的可维护性、可扩展性和可重用性,同时也可以提高开发效率和团队协作效率。 Android模块化设计思想的实现方式有很多种,其中比较常见的方式包括: 1.组件化(Componentization):将整个应用拆分成多个独立的组件,每个组件都有自己的功能和职责,可以独立开发、测试、编译和部署。组件之间通过接口进行通信,可以灵活组合和替换,从而实现应用的灵活性和扩展性。 2.插件化(Plug-in):将应用的某些功能或模块以插件的形式动态加载到应用中,从而实现应用的动态扩展和更新。插件化可以提高应用的灵活性和可扩展性,但也会增加应用的复杂度和安全风险。 3.模块化(Modularization):将整个应用按照业务模块进行逻辑的划分,将不同的业务模块拆分成独立的模块,每个模块都有自己的功能和职责,可以独立开发、测试、编译和部署。模块之间通过接口进行通信,可以灵活组合和替换,从而实现应用的可维护性、可扩展性和可重用性。 下面是一个Android模块化设计的例子: ```java // 定义一个公共接口 public interface IModule { void doSomething(); } // 定义一个模块A public class ModuleA implements IModule { @Override public void doSomething() { // 实现模块A的功能 } } // 定义一个模块B public class ModuleB implements IModule { @Override public void doSomething() { // 实现模块B的功能 } } // 定义一个模块管理器 public class ModuleManager { private static Map<String, IModule> sModules = new HashMap<>(); public static void registerModule(String name, IModule module) { sModules.put(name, module); } public static IModule getModule(String name) { return sModules.get(name); } } // 在应用启动时注册模块 ModuleManager.registerModule("moduleA", new ModuleA()); ModuleManager.registerModule("moduleB", new ModuleB()); // 在应用中使用模块 IModule moduleA = ModuleManager.getModule("moduleA"); if (moduleA != null) { moduleA.doSomething(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值