介面隔離原則(ISP),第四個SOLID原則
介面隔離的原則之一是 五項原則 SOLID
物件導向設計。
一個類別應該有多個更小、更集中的介面。
然後用戶類別選擇與他們相關的接口,減少不必要的依賴。
預計閱讀時間: 3 minuti
ISP 和 Laravel
在 Laravel 中,界面隔離原則強調重點突出且內聚的介面設計。與其創建整體接口,不如根據實現類的需求設計特定的接口。
讓我們考慮一個快取服務的介面。我們不要將所有快取方法分組到一個介面中,而是根據功能將它們分開。
// CacheServiceInterface.php
interface CacheServiceInterface
{
public function store($key, $value);
public function retrieve($key);
}
優點
- 減少依賴: 透過僅實現相關接口,類別就不會承受它們不需要的不必要方法的負擔。
- 維護更方便: 對介面的變更或添加不會影響不相關的類,從而提高程式碼的可維護性。
- 可讀性: 程式碼變得更具可讀性和不言自明,因為類別對其功能是明確的。
例子
現在讓我們來看一個 Laravel 中介面隔離原則的應用範例。
假設我們要開發一個電子商務平台。我們有不同類型的使用者:客戶和管理員。這些用戶具有獨特的能力:
- 客戶:
- 查看產品
- 將產品加入購物車
- 下訂單
- 管理員:
- 管理產品
- 管理訂單
- 管理客戶
在傳統方法中,您可能會建立一個大型命名介面 UserInterface
其中包括所有必要的方法。這會導致不必要的功能耦合,從而降低系統的靈活性。
interface UserInterface {
public function viewProducts();
public function addProductsToCart();
public function placeOrders();
public function manageProducts();
public function manageOrders();
public function manageCustomers();
}
ISP應用程式: 現在讓我們將介面隔離原則應用到這個場景。建立單獨的介面 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();
}
在各自的類別中實作這些介面:
class Customer implements CustomerInterface {
// Implement methods specific to customers
}
class Admin implements AdminInterface {
// Implement methods specific to admins
}
介面隔離原則是一個基本概念,建議創建有針對性且可維護的軟體元件。在 Laravel 中,應用此原則可確保程式碼庫保持靈活、可擴展且易於理解。透過根據特定功能隔離接口,您可以為更有組織、更健壯的應用程式架構鋪平道路。
相關閱讀
Ercole Palmeri