Maison >développement back-end >C++ >RelayCommand vs ICommand simplifié : quel est le meilleur pour MVVM ?

RelayCommand vs ICommand simplifié : quel est le meilleur pour MVVM ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-20 17:41:09610parcourir

RelayCommand vs. Simplified ICommand: Which is Best for MVVM?

Explication détaillée du modèle RelayCommand dans l'implémentation simplifiée de MVVM

Dans l'architecture MVVM (Model-View-ViewModel), créer plusieurs commandes peut être une tâche fastidieuse. Ce problème a donné lieu à diverses solutions, notamment une approche simplifiée utilisant une seule classe ICommand.

Implémentation simplifiée des commandes

La classe ICommand implémentée contient deux méthodes déléguées : OnExecute (renvoie void) et OnCanExecute (renvoie bool). Dans le constructeur, ces méthodes sont passées en paramètres. Les méthodes CanExecute et Execute de l'interface ICommand appellent les méthodes déléguées correspondantes.

Avantages des commandes simplifiées

  • Effort de codage réduit par rapport à la création de plusieurs classes ICommand.
  • Les commandes peuvent être définies de manière flexible dans la classe ViewModel.

Explorez les alternatives : RelayCommand

Une alternative courante à la simplification des commandes est la RelayCommand, comme l'a démontré Karl Shifflet. Il utilise Action pour effectuer des actions spécifiques, permettant une implémentation plus propre.

Mise en œuvre de RelayCommand

RelayCommand utilise Predicate pour déterminer l'exécutabilité et Action pour effectuer des opérations. Ces délégués sont transmis au constructeur. La méthode CanExecute appelle le prédicat pour vérifier la disponibilité, tandis que la méthode Execute effectue l'opération.

Avantages de RelayCommand

  • Fournissez automatiquement des notifications de changement de propriété pour les commandes liées.
  • Prend en charge le paramétrage via les paramètres délégués.

Exemple d'utilisation

Les commandes simplifiées et RelayCommand peuvent être utilisées de la même manière dans ViewModel :

<code>public class MyViewModel
{
    // 简化命令
    public ICommand DoSomethingCommand { get; set; }

    // RelayCommand
    public ICommand DoSomethingCommand2 { get; set; }

    public MyViewModel()
    {
        // 简化命令
        DoSomethingCommand = new TestCommand(CanDoSomething, DoSomeImportantMethod);

        // RelayCommand
        DoSomethingCommand2 = new RelayCommand(CanDoSomething, DoSomeImportantMethod);
    }

    // ...
}</code>

Conclusion

Bien que RelayCommand fournisse une solution intéressante, RelayCommand offre des avantages supplémentaires tels que la notification automatique des changements de propriété et la prise en charge des paramètres. Les deux méthodes peuvent simplifier efficacement la mise en œuvre des commandes MVVM, permettant aux développeurs de se concentrer sur la logique de l'application plutôt que sur le code passe-partout.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn