Rumah >hujung hadapan web >tutorial js >[Bahagian Pengenalan Ringkas kepada SOLID Typescript
Pelanggan tidak boleh dipaksa untuk melaksanakan antara muka yang mereka tidak gunakan.
Ini bermakna antara muka hendaklah kecil dan khusus untuk keperluan kelas pelaksana.
Sebagai Contoh:
❌Teruk
interface Work{ eat(): void; work(): void; } class Developer implements Work{ eat() { console.log("eat"); } work() { console.log("work"); } } class Robot implements Work{ eat() { throw new Error("eat"); // Robot does not need to inherit eat() method } work() { console.log("work"); } }
✅Baik
interface Workable { work(): void; } interface Eatable { eat(): void; } class Developer implements Workable, Eatable { eat() {} work(): void { } }
Berdasarkan kekuatan antara muka, satu kelas boleh melaksanakan berbilang antara muka. Anda harus memecahkan antara muka kepada bahagian yang lebih kecil agar lebih sesuai dengan keperluan kelas anda
*Modul peringkat tinggi tidak boleh bergantung pada modul peringkat rendah. Kedua-duanya harus bergantung pada abstraksi.
*
Prinsip ini menggalakkan penggunaan suntikan pergantungan
Sebagai Contoh:
❌Teruk
class BackendDeveloper { develop(){ console.log("Developing developer"); } } class FrontendDeveloper { develop(){ console.log("FrontendDeveloper"); } } class Project { backendDeveloper: BackendDeveloper; frontendDeveloper: FrontendDeveloper; constructor() { this.backendDeveloper = new BackendDeveloper(); this.frontendDeveloper = new FrontendDeveloper(); } build(){ this.backendDeveloper.develop(); this.frontendDeveloper.develop(); } }
Dalam coretan kod, terdapat berbilang masalah. Walau bagaimanapun, masalah paling penting yang anda boleh lihat ialah:
✅Baik
interface Developer { developer(): void } class BackendDev implements Developer { developer() { console.log("Developer Developer"); } } class FrontendDeveloper implements Developer { developer() { console.log("Developer Developer"); } } class Project { constructor(private developers: Developer[]) { } build(){ this.developers.forEach(developer => {developer.developer();}); } }
Modul peringkat tinggi bergantung pada abstraksi (antara muka Pembangun).
Modul peringkat rendah melaksanakan abstraksi.
Gandingan yang longgar menjadikannya mudah untuk dipanjangkan dan diselenggara.
Menambah MobileDev:
class MobileDeveloper implements Developer { develop() { console.log("Writing mobile code"); } } // Usage const developers: Developer[] = [ new BackendDeveloper(), new FrontendDeveloper(), new MobileDeveloper(), //easy to add and make it does not change in Project() ]; const project = new Project(developers); project.build();
Terima Kasih :)))
Atas ialah kandungan terperinci [Bahagian Pengenalan Ringkas kepada SOLID Typescript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!