-2
Y at-il un bon modèle de développement que je peux utiliser pour organiser mon code?Comment créer une bonne interface pour ma classe?
J'utilise C++.
- J'ai une classe de base de commandement
- Des dizaines de classes dérivées de la classe de commande
- classe de transaction, qui stocke l'ensemble des commandes (peut être modifiée)
Avec l'approche actuelle de l'utilisateur de l'interface transaction doit faire quelque chose comme
template <typename Base, typename T>
inline bool instanceof(const T *ptr) {
return typeid(Base) == typeid(*ptr);
}
Transaction tx;
// here I want to process all commands
for(int i=0; i < N; i++){
if(instanceof<AddPeer>(tx.get(i)) {
// ... process
}
if(instanceof<TransferAsset>(tx.get(i)) {
// ... process
}
... for every type of command, but I have dozens of them
}
class Command;
class TransferAsset: public Command {}
class AddPeer: public Command {}
// dozens of command types
class Transaction{
public:
// get i-th command
Command& get(int i) { return c[i]; }
private:
// arbitrary collection (of commands)
std::vector<Command> c;
}
Si le traitement d'une commande est difficile (beaucoup de code), alors il est probablement mauvais de donner à cette logique de traitement directement ' la méthode du processus. Je pense à 'class Processor', qui sera passé à' void process (Processor & e) '. Est-ce bon design? – warchantua