Rumah >hujung hadapan web >tutorial js >Singleton atau Boleh Diperhatikan? Pilihan yang Salah Boleh Membayar Kos Promosi Anda!

Singleton atau Boleh Diperhatikan? Pilihan yang Salah Boleh Membayar Kos Promosi Anda!

DDD
DDDasal
2025-01-11 06:10:43756semak imbas

Corak reka bentuk adalah asas dalam mencipta perisian yang tersusun dengan baik dan mudah diselenggara. Antaranya, Singleton dan Observable sering digunakan dalam senario yang memerlukan kawalan keadaan global dan komunikasi antara bahagian sistem yang berlainan. Dalam artikel ini, kami akan meneroka cara kedua-dua piawai ini berfungsi, masa untuk menggunakannya, perbezaannya dan memberikan contoh praktikal tentang cara melaksanakannya.

Apa itu Singleton?

Corak Singleton ialah corak reka bentuk ciptaan yang memastikan kelas hanya mempunyai satu tika dan menyediakan titik global akses kepada tika itu. Corak ini berguna apabila anda memerlukan satu objek merentas keseluruhan aplikasi, seperti tetapan global, sambungan pangkalan data atau pengurusan log.

Bagaimanakah Singleton berfungsi?

Ciri utama Singleton ialah ia mengehadkan contoh kelas kepada objek tunggal, memastikan semua permintaan contoh mengembalikan objek yang sama. Untuk mencapai matlamat ini, corak biasanya menggunakan kaedah statik yang mencipta tika hanya apabila ia diminta buat kali pertama, menjamin penciptaan unik dan penggunaan objek di seluruh sistem.

Dalam rajah di bawah, jujukan menunjukkan cara tika Singleton dicipta dan diakses, memastikan ia unik.

Singleton ou Observable? A Escolha Errada Pode Custar Sua Promoção!

Rajah jujukan Singleton menggambarkan aliran interaksi antara klien dan kelas Singleton. Proses bermula dengan pelanggan memanggil kaedah getInstance() statik untuk mendapatkan tika Singleton. Jika tika itu belum lagi dibuat, Singleton mencipta tika baharu dan mengembalikannya. Apabila klien memanggil kaedah getInstance() sekali lagi, tika yang sama dikembalikan, memastikan bahawa terdapat hanya satu tika objek Singleton semasa keseluruhan pelaksanaan program.

Contoh Penggunaan - Singleton dalam TypeScript

class Singleton {
    private static instance: Singleton;

    private constructor() { }

    // Método para acessar a instância única
    public static getInstance(): Singleton {
        if (!Singleton.instance) {
            Singleton.instance = new Singleton();
        }
        return Singleton.instance;
    }

    public showMessage(): string {
        return "Esta é a única instância!";
    }
}

// Uso do Singleton
const instance1 = Singleton.getInstance();
console.log(instance1.showMessage()); // "Esta é a única instância!"
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // true

Bila hendak menggunakan Singleton?

  • Tetapan Global: Apabila anda memerlukan satu contoh untuk menyimpan tetapan sistem, seperti pembolehubah persekitaran.
  • Pengurusan sambungan: contohnya, untuk mengurus sambungan ke pangkalan data atau pelayan API.
  • Pengurusan sumber: apabila perlu untuk mengawal akses kepada sumber unik, seperti pembalak atau cache.

Apakah yang Boleh Diperhatikan?

Corak Boleh Diperhatikan ialah corak reka bentuk tingkah laku yang mentakrifkan pergantungan satu-ke-banyak antara objek. Dalam erti kata lain, apabila keadaan objek ("subjek") berubah, semua tanggungannya ("pemerhati") dimaklumkan secara automatik. Corak ini digunakan secara meluas dalam sistem di mana peristiwa dan perubahan keadaan perlu disebarkan antara komponen yang berbeza, seperti antara muka grafik atau sistem pemantauan.

Bagaimanakah Observable berfungsi?

Corak Observable membenarkan objek untuk "memerhati" perubahan dalam keadaan objek dan bertindak balas terhadap perubahan tersebut. Coraknya berdasarkan tiga komponen utama:

  1. Subjek: objek yang mengekalkan keadaan dan menghantar pemberitahuan kepada pemerhati.
  2. Pemerhati: objek yang berminat dengan keadaan perubahan Subjek.
  3. Langganan: mekanisme yang membenarkan Pemerhati melanggan atau menyahlanggan pemberitahuan Subjek.

Singleton ou Observable? A Escolha Errada Pode Custar Sua Promoção!

Rajah jujukan boleh diperhatikan menunjukkan cara corak berfungsi dengan berbilang pemerhati. Subjek (atau objek yang diperhatikan) memberitahu semua Pemerhati berdaftar apabila perubahan keadaan berlaku. Setiap Pemerhati bertindak balas terhadap pemberitahuan itu, mengambil tindakan yang perlu berdasarkan maklumat yang diterima. Proses pemberitahuan disebarkan supaya semua pemerhati dikemas kini secara serentak, memastikan mereka disegerakkan dengan keadaan Subjek. Corak ini berguna apabila terdapat berbilang komponen atau bahagian sistem yang perlu dimaklumkan tentang perubahan dalam keadaan objek.

Contoh Penggunaan - Boleh diperhatikan dalam TypeScript

class Singleton {
    private static instance: Singleton;

    private constructor() { }

    // Método para acessar a instância única
    public static getInstance(): Singleton {
        if (!Singleton.instance) {
            Singleton.instance = new Singleton();
        }
        return Singleton.instance;
    }

    public showMessage(): string {
        return "Esta é a única instância!";
    }
}

// Uso do Singleton
const instance1 = Singleton.getInstance();
console.log(instance1.showMessage()); // "Esta é a única instância!"
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // true

Bila hendak menggunakan Observable?

  • Acara dalam antara muka grafik: untuk bertindak balas terhadap klik butang, perubahan medan atau kemas kini skrin.
  • Pemberitahuan perubahan keadaan: apabila beberapa komponen perlu dimaklumkan tentang perubahan pada objek.
  • Pemodelan aliran data reaktif: dalam sistem yang terdapat penyebaran data atau peristiwa antara berbilang sistem, seperti dalam aplikasi berasaskan peristiwa.

Perbezaan antara Singleton dan Observable

Walaupun kedua-dua corak berfungsi untuk mengurus objek dengan cara terkawal, tujuan dan gelagatnya sangat berbeza:

Ciri
Característica Singleton Observable
Objetivo Garantir que uma classe tenha apenas uma instância. Notificar múltiplos objetos sobre mudanças de estado.
Instância Apenas uma instância é criada e compartilhada. Vários objetos podem ser observadores de um único sujeito.
Uso principal Gerenciamento de recursos exclusivos. Notificação de eventos e mudanças de estado.
Exemplo de uso Gerenciamento de logs ou configuração global. Atualização de interfaces gráficas ou propagação de eventos.
Singleton

Boleh diperhatikan

Objektif

Pastikan kelas hanya mempunyai satu tika. Beritahu berbilang objek tentang perubahan keadaan. Instance Hanya satu tika dibuat dan dikongsi. Beberapa objek boleh menjadi pemerhati bagi satu subjek. Kegunaan utama Pengurusan sumber eksklusif. Pemberitahuan tentang peristiwa dan perubahan keadaan. Contoh penggunaan Pengurusan log atau konfigurasi global. Mengemas kini antara muka grafik atau menyebarkan acara. Kesimpulan

Corak Singleton dan Boleh diperhatikan

adalah asas dalam beberapa situasi dalam pembangunan perisian.
Singleton sesuai apabila kita perlu menjamin satu contoh kelas sepanjang aplikasi, manakala Boleh Diperhatikan berguna untuk memberitahu dan mengurus interaksi antara berbilang objek berdasarkan perubahan keadaan Apabila memilih antara corak ini, pertimbangkan keperluan projek anda. Gunakan Singleton apabila keunikan tika adalah penting untuk aplikasi dan gunakan Boleh diperhatikan apabila sistem anda perlu bertindak balas terhadap perubahan dalam keadaan atau peristiwa.

Atas ialah kandungan terperinci Singleton atau Boleh Diperhatikan? Pilihan yang Salah Boleh Membayar Kos Promosi Anda!. 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