讨教个设计模式方面的问题,如何设计一个模式,让我们更新代码不影响其他人使用我们的so动态库

ayw215 ayw215 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我设计模式这块学的不好,有个问题不知道怎么解决
现在的需求是这样的:
A需要使用我们提供一个so动态库,A使用这个so里面的基类的方法
要求做到:他们不需要更改代码,我们这边从这个基类里面派生出子类,然后实现子类的方法。

我是这么写的:
class Base
{
public:
virtual Base* create(){return NULL;};
virtual void Parse(){};
virtual void Destory(){};
Base(){};
~Base(){};
};


class Derive :public Base
{
public:
Base* create()
{
return new Derive;
}
void Parse()
{
cout<<"From Derive\n";
}
void Destory()
{
cout<<"From Derive Destory\n";
}

};


使用的时候是这么用的:

int main()
{
Derive soft;//==============>问题在这:别人使用的时候还是得把这里修改成我写的Derive类
Base* prqt = soft.create();
prqt->Parse();
prqt->Destory();
return 0;
}

Derive soft;//==============>问题在这:别人使用的时候还是得把这里修改成我写的Derive类
不知道有什么好的方式,可以做到,我派生出子类后,调用者不用修改代码重新编译,直接使用我的so动态库?

谢谢!
...全文
评论 27
收藏 已收藏
分享
返回顶部
ayw215
模式及实现 5,529 成员 4,167 内容