Artikel

Prinsip Segregasi Antarmuka (ISP), prinsip SOLID kaping papat

Prinsip segregasi antarmuka minangka salah sawijining limang prinsip SOLID saka desain berorientasi obyek.

Kelas kudu duwe sawetara antarmuka sing luwih cilik lan luwih fokus.

Banjur kelas pangguna milih antarmuka sing cocog karo dheweke, nyuda dependensi sing ora perlu.

Perkiraan wektu maca: 3 menit

ISP lan Laravel

Ing Laravel, prinsip segregasi antarmuka nandheske desain antarmuka sing fokus lan kohesif. Tinimbang nggawe antarmuka monolitik, luwih becik ngrancang antarmuka khusus kanggo kabutuhan kelas implementasine.

Ayo nimbang antarmuka menyang layanan caching. Tinimbang nglumpukake kabeh cara caching dadi siji antarmuka, ayo misahake adhedhasar fungsi.

// CacheServiceInterface.php
interface CacheServiceInterface
{
    public function store($key, $value);
    public function retrieve($key);
}
      

Wuku

  1. Ketergantungan sing dikurangi: kanthi mung ngleksanakake antarmuka sing cocog, kelas ora dibebani karo cara sing ora perlu.
  2. Pangopènan luwih gampang: Owah-owahan utawa tambahan ing antarmuka ora mengaruhi kelas sing ora ana hubungane, nambah kemanten kode sampeyan.
  3. Keterbaca: kode dadi luwih bisa diwaca lan poto-panjelasan, wiwit kelas eksplisit babagan fungsi sing.

contone

Saiki ayo ndeleng conto aplikasi prinsip segregasi antarmuka ing Laravel.

Upaminipun kita pengin ngembangake platform e-commerce. Kita duwe macem-macem jinis pangguna: pelanggan lan administrator. Pangguna iki nduweni kemampuan sing beda:

  1. Klien:
    • Ndeleng produk
    • Tambah produk menyang cart
    • Nggawe pesenan
  2. Administrator:
    • Ngatur produk
    • Ngatur pesenan
    • Ngatur pelanggan

Ing pendekatan tradisional, sampeyan bisa nggawe siji antarmuka jeneng gedhe UserInterface sing kalebu kabeh cara sing perlu. Iki bakal nyebabake kopling fungsional sing ora perlu, nggawe sistem kurang fleksibel.

newsletter inovasi
Aja kantun warta paling penting babagan inovasi. Mlebu kanggo nampa wong-wong mau liwat email.
        interface UserInterface {
            public function viewProducts();
            public function addProductsToCart();
            public function placeOrders();
            public function manageProducts();
            public function manageOrders();
            public function manageCustomers();
        }
              

        Aplikasi ISP: Saiki ayo gunakake prinsip pemisahan antarmuka kanggo skenario iki. Nggawe antarmuka kapisah kanggo CustomerInterface e AdminInterface:

        interface CustomerInterface {
            public function viewProducts();
            public function addProductsToCart();
            public function placeOrders();
        }
        
        interface AdminInterface {
            public function manageProducts();
            public function manageOrders();
            public function manageCustomers();
        }
              

        Implementasikake antarmuka kasebut ing kelas masing-masing:

        class Customer implements CustomerInterface {
            // Implement methods specific to customers
        }
        
        class Admin implements AdminInterface {
            // Implement methods specific to admins
        }
              

        Prinsip pemisahan antarmuka minangka konsep dhasar sing nyaranake nggawe komponen piranti lunak sing ditarget lan bisa dijaga. Ing Laravel, ngetrapake prinsip iki njamin basis kode tetep fleksibel, bisa ditambah, lan gampang dingerteni. Kanthi misahake antarmuka adhedhasar fungsi tartamtu, sampeyan mbukak dalan kanggo arsitektur aplikasi sing luwih teratur lan mantep.

        Wacan sing gegandhengan

        Ercole Palmeri

        newsletter inovasi
        Aja kantun warta paling penting babagan inovasi. Mlebu kanggo nampa wong-wong mau liwat email.