Prinsip Interface Segregation Principle (ISP) Pada SOLID
Interface Segregation Principle (ISP) menekankan bhwa sebuah interface/antarmuka sebaiknya tidak mengharuskan kelas untuk mengimplementasikan metode yang tidak dibutuhkan. Jadi, lebih baik membagi antarmuka besar menjadi beberapa antarmuka kecil yang lebih spesifik.
![]() |
Ilustrasi Interface Segregation Principle |
Java memungkinkan Anda untuk membuat interface yang lebih kecil dan spesifik. Daripada satu interface besar, lebih baik memecahnya menjadi beberapa interface yang lebih kecil, misalnya Readable
dan Writable
dibandingkan dengan FileOperations
yang berisi semua metode. Dengan demikian, kelas hanya mengimplementasikan metode yang memang mereka butuhkan.
Contoh Interface Segregation Principle (ISP)
Misalkan kita sedang mengembangkan aplikasi untuk mesin fotokopi yang memiliki beberapa jenis mesin, seperti mesin fotokopi standar, mesin fotokopi dengan fungsi tambahan (scanner, printer), dan sebagainya.
Desain yang Tidak Memenuhi ISP:
Misalkan kita memiliki antarmuka MultiFunctionDevice
yang mencakup semua fungsi yang bisa dimiliki mesin fotokopi.
public interface MultiFunctionDevice {
void print(Document doc);
void scan(Document doc);
void fax(Document doc);
}
Jika kita memiliki mesin fotokopi yang hanya bisa mencetak, maka kelas tersebut harus mengimplementasikan metode scan
dan fax
yang sebenarnya tidak diperlukan. Hal ini melanggar ISP karena kelas tersebut harus bergantung pada metode yang tidak ia butuhkan.
Solusi dengan ISP: Kita bisa membuat antarmuka kecil dan spesifik untuk setiap fungsi.
public interface Printer {
void print(Document doc);
}
public interface Scanner {
void scan(Document doc);
}
public interface FaxMachine {
void fax(Document doc);
}
Sekarang, kita bisa membuat kelas yang hanya mengimplementasikan antarmuka yang dibutuhkan:
public class SimplePrinter implements Printer {
@Override
public void print(Document doc) {
System.out.println("Printing document...");
}
}
Hubungan ISP dengan KISS
Menghindari Kompleksitas ISP mendukung KISS dengan menghindari ketergantungan yang tidak diperlukan. Dengan antarmuka yang lebih kecil dan spesifik, kode menjadi lebih sederhana, dan kelas hanya memiliki metode yang benar-benar relevan dengan fungsinya.
Lebih Mudah Dibaca dan Dipelihara Setiap antarmuka kecil mencerminkan tanggung jawab spesifik. Ini menjaga kode tetap mudah dibaca dan dikelola, yang sejalan dengan filosofi KISS untuk menjaga kode tetap sederhana.
Artikel ini terkait dengan: menulis clean code dengan prinsip solid dan kiss
Related Article:
1. Menulis clean code dengan prinsip solid dan kiss
2. Menulis Clean Code: Prinsip Single Responsibility Principle (SRP) pada SOLID
3. Menulis Clean Code Dengan Open Closed Principle
4. Menulis Clean dengan Interface Segregation Principle
5. Menulis Clean Code: Prinsip Dependency Inversion Principle (DIP) Pada SOLID
Comments
Post a Comment