在不改变主要方法的情况下扩展应用程序?

时间:2010-10-26 12:47:12

标签: c++ design-patterns

我需要在我的c ++应用程序中扩展几个类而不更改应用程序中的任何代码。 (产品扩展为解决方案)。有没有特定的设计模式呢?

2 个答案:

答案 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