SOLID ialah akronim yang mewakili lima prinsip asas pengaturcaraan berorientasikan objek, yang dicadangkan oleh Robert C. Martin - Uncle Bob. Di sini anda boleh membaca lebih lanjut tentang artikelnya.
Prinsip ini bertujuan untuk menambah baik struktur dan penyelenggaraan kod, menjadikannya lebih fleksibel, berskala dan lebih mudah difahami. Prinsip sedemikian membantu pengaturcara mencipta kod yang lebih teratur, membahagikan tanggungjawab, mengurangkan kebergantungan, memudahkan proses pemfaktoran semula dan menggalakkan penggunaan semula kod.
"I" dalam akronim bermaksud "Prinsip Pengasingan Antara Muka". Frasa yang uncle bob gunakan untuk mentakrifkan prinsip ini ialah:
"Tiada pelanggan harus dipaksa untuk bergantung pada antara muka yang mereka tidak gunakan"
Prinsip Pengasingan Antara Muka menangani masalah biasa: antara muka yang terlalu besar yang memaksa pelaksanaan yang tidak perlu ke dalam kelas yang tidak memerlukannya.
Bayangkan sistem pengesahan dalam aplikasi, di mana kaedah berbeza digunakan untuk mengesahkan pengguna (cth., melalui kata laluan, dengan biometrik, dengan Kod QR).
Pertama, mari kita lihat aplikasi kelas ini tanpa menggunakan ISP dalam Java dan Typescript:
interface Authenticator { boolean authenticateWithPassword(String userId, String password); boolean authenticateWithBiometrics(String userId); boolean authenticateWithQRCode(String qrCode); } class PasswordAuthenticator implements Authenticator { @Override public boolean authenticateWithPassword(String userId, String password) { System.out.println("Authenticating with password..."); return true; } @Override public boolean authenticateWithBiometrics(String userId) { throw new UnsupportedOperationException("Not implemented"); } @Override public boolean authenticateWithQRCode(String qrCode) { throw new UnsupportedOperationException("Not implemented"); } }
interface Authenticator { authenticateWithPassword(userId: string, password: string): boolean; authenticateWithBiometrics(userId: string): boolean; authenticateWithQRCode(qrCode: string): boolean; } class PasswordAuthenticator implements Authenticator { authenticateWithPassword(userId: string, password: string): boolean { console.log("Authenticating with password..."); return true; } authenticateWithBiometrics(userId: string): boolean { throw new Error("Not implemented"); } authenticateWithQRCode(qrCode: string): boolean { throw new Error("Not implemented"); } }
Untuk menyelesaikan masalah, kami boleh membahagikan antara muka Pengesah kepada antara muka yang lebih kecil dan lebih khusus.
interface PasswordAuth { boolean authenticateWithPassword(String userId, String password); } interface BiometricAuth { boolean authenticateWithBiometrics(String userId); } interface QRCodeAuth { boolean authenticateWithQRCode(String qrCode); } class PasswordAuthenticator implements PasswordAuth { @Override public boolean authenticateWithPassword(String userId, String password) { System.out.println("Authenticating with password..."); return true; } } class BiometricAuthenticator implements BiometricAuth { @Override public boolean authenticateWithBiometrics(String userId) { System.out.println("Authenticating with biometrics..."); return true; } } class QRCodeAuthenticator implements QRCodeAuth { @Override public boolean authenticateWithQRCode(String qrCode) { System.out.println("Authenticating with QR Code..."); return true; } }
interface PasswordAuth { authenticateWithPassword(userId: string, password: string): boolean; } interface BiometricAuth { authenticateWithBiometrics(userId: string): boolean; } interface QRCodeAuth { authenticateWithQRCode(qrCode: string): boolean; } class PasswordAuthenticator implements PasswordAuth { authenticateWithPassword(userId: string, password: string): boolean { console.log("Authenticating with password..."); return true; } } class BiometricAuthenticator implements BiometricAuth { authenticateWithBiometrics(userId: string): boolean { console.log("Authenticating with biometrics..."); return true; } } class QRCodeAuthenticator implements QRCodeAuth { authenticateWithQRCode(qrCode: string): boolean { console.log("Authenticating with QR Code..."); return true; } }
Atas ialah kandungan terperinci (I): Menggunakan \'Prinsip Pengasingan Antara Muka\' dengan Typescript dan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!