我需要在我的c ++应用程序中扩展几个类而不更改应用程序中的任何代码。 (产品扩展为解决方案)。有没有特定的设计模式呢?
答案 0 :(得分:3)
你的问题有点模糊。为了在不改变任何代码的情况下扩展应用程序,应用程序必须提供可扩展性的特定机制,例如,一个plug-in system。
答案 1 :(得分:0)
这取决于您想要的可扩展性。如果扩展需要重新链接代码,它会好吗?如果没关系,那么你可以使用工厂方法和多态。
struct Extension {
virtual ~Extension() { }
// ...
};
Extension* load_extension()
{
ifstream config_file(".conf");
string line;
getline(config_file, line);
if( line == "this extension" ) return new ThisExtension();
else if( line == "that extension" ) return new ThatExtension();
// else if ...
else return NoExtension();
}
在这里,要创建一个新扩展,您需要做的就是从Extension
创建子类,并在工厂方法中添加一行。那是重新编译一个文件并重新链接项目。
如果不能重新链接应用程序,那么您可以load a dynamic library at runtime。