Rumah >pembangunan bahagian belakang >C++ >Adakah ICommand Generik atau RelayCommand Pendekatan Terbaik untuk Perintah MVVM Boleh Digunakan Semula?

Adakah ICommand Generik atau RelayCommand Pendekatan Terbaik untuk Perintah MVVM Boleh Digunakan Semula?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-20 17:30:11213semak imbas

Is a Generic ICommand or RelayCommand the Best Approach for Reusable MVVM Commands?

Laksanakan arahan dalam struktur MVVM boleh guna semula

Dalam pelaksanaan MVVM baru-baru ini, keperluan untuk berbilang arahan telah timbul. Untuk mengurangkan proses yang membosankan mencipta kelas ICommand tunggal, pendekatan alternatif telah dicipta. Bagaimanapun, keberkesanan dan potensi penambahbaikannya masih belum dibincangkan.

Penyelesaian yang dicadangkan: ICommand Generik

Untuk menyepadukan penciptaan arahan, kelas ICommand generik diperkenalkan, menggunakan perwakilan untuk melaksanakan dan melaksanakan fungsi boleh laku. Dalam pembina ICommand ini, dua kaedah perwakilan diberikan. Selepas itu, kaedah ICommand memanggil kaedah perwakilan.

Walaupun fungsi berfungsi, ini menimbulkan persoalan sama ada pendekatan ini konsisten dengan amalan terbaik atau jika penyelesaian yang lebih sesuai wujud.

Alternatif: RelayCommand

Seperti yang ditunjukkan oleh Karl Shifflet, satu kaedah yang sangat disyorkan ialah RelayCommand. Ia mentakrifkan operasi yang dilakukan apabila dipanggil.

Contoh pelaksanaan RelayCommand:

<code class="language-csharp">public class RelayCommand : ICommand
{
    private readonly Predicate<object> _canExecute;
    private readonly Action<object> _execute;

    public RelayCommand(Predicate<object> canExecute, Action<object> execute)
    {
        _canExecute = canExecute;
        _execute = execute;
    }

    // ICommand 实现...

}</code>

Pelaksanaan ini memudahkan penciptaan arahan, seperti yang ditunjukkan dalam contoh berikut:

<code class="language-csharp">public class MyViewModel
{
    public ICommand DoSomethingCommand =>
        new RelayCommand(
            p => this.CanDoSomething(),
            p => this.DoSomeImportantMethod());
}</code>

Sumber lain:

• "Corak - Aplikasi WPF Menggunakan Corak Reka Bentuk MVVM" oleh Josh Smith memberikan pandangan lanjut tentang pendekatan RelayCommand.

Atas ialah kandungan terperinci Adakah ICommand Generik atau RelayCommand Pendekatan Terbaik untuk Perintah MVVM Boleh Digunakan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn