2010-10-26 3 views

Répondre

3

Votre question est un peu vague. Afin d'étendre une application sans changer de code, l'application devrait fournir un mécanisme spécifique pour l'extensibilité, par ex. un plug-in system.

+0

Oui, pouvez-vous envoyer un exemple de code pour un tel mécanisme. – Janaka

+5

@Janaka: Cela ne va pas vous aider. Vous devez vérifier si le code que vous avez déjà fournit un tel système. Il ne peut pas être ajouté sans changer de code. –

0

Cela dépend de la capacité d'extension que vous souhaitez. Serait-il acceptable si l'extension nécessite de relier le code? Si tout va bien, vous pouvez utiliser une méthode d'usine et un polymorphisme.

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(); 
} 

Ici, pour créer une nouvelle extension tout ce que vous devez faire est de sous-classe de Extension et ajouter une ligne à la méthode de l'usine. Cela recompile un fichier et relit le projet.

Si ce n'est pas correct de relier l'application, alors vous pouvez load a dynamic library at runtime.

Questions connexes