讨教个设计模式方面的问题,如何设计一个模式,让我们更新代码不影响其他人使用我们的so动态库
我设计模式这块学的不好,有个问题不知道怎么解决
现在的需求是这样的:
A需要使用我们提供一个so动态库,A使用这个so里面的基类的方法
要求做到:他们不需要更改代码,我们这边从这个基类里面派生出子类,然后实现子类的方法。
我是这么写的:
使用的时候是这么用的:
Derive soft;//==============>问题在这:别人使用的时候还是得把这里修改成我写的Derive类
不知道有什么好的方式,可以做到,我派生出子类后,调用者不用修改代码重新编译,直接使用我的so动态库?
谢谢!
现在的需求是这样的:
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动态库?
谢谢!
...全文


模式及实现
