【面向對象的設計原則】
◆ 2.1-面向對象設計的五大原則
2.1.1-單一職責原則 SRP
1. 單一職責有兩個含義:① 避免相同的職責分散到不同的類中 ② 避免一個類承擔太多職責
2. 爲什麼要遵守SRP: ① 減少類之間的耦合 ② 提高類的複用性
3. SRP在實際代碼開發中的應用:
(1)工廠模式(Factory):允許在代碼執行時實例化對象。
→(案例-用工廠模式解決連接多個數據庫)----詳見PDF
→(案例-用工廠模式解決SNS動態實現)----詳見PDF
(2)命令模式:分離“命令的請求者”和“命令的實現者”方面的職責。
→(案例-用命令模式解決餐館喫飯的問題)
2.1.2-接口隔離原則 ISP
1.IPS的主要觀點:
① 一個類對另外一個類的依賴性應當是建立在最小的接口上的。
② 客戶端程序不應該依賴它不需要的接口方法(功能),而是依賴它所需要的接口。
2.對接口的污染:
3.對於接口的污染,考慮兩條處理方式:① 利用委託分離接口;② 利用多繼承分離接口。
2.1.3-開放-封閉原則 OCP
1. 此原則能夠提高系統的可擴展性和可維護性。
→(案例-播放器)
2. 此原則的核心思想是 對抽象編程,而不對具體編程,因爲抽象相對穩定。
3. 如何遵守開放-封閉原則
① 在設計方面充分應用“抽象”和“封裝”的思想
② 在系統功能編程實現方面應用接口interface的編程
2.1.4-(里氏)替換原則 LSP
2.1.5-依賴倒置原則 DIP
1. 將依賴關係倒置爲依賴接口,抽象不能依賴於具體,具體應該要依賴於抽象。
2. 如何滿足DIP:
每個較高層次類都爲它所需要的服務提出一個接口聲明,較低層次類實現這個接口。
每個高層類都通過該抽象接口使用服務。
1.拋出和捕獲異常:
2.PHP基本異常類:
(代碼10.1-exception.php)
10.2.簡單工廠模式:(代碼10.2-FactorPattern.php)
10.3.單例模式:(代碼10.3-SingletonPattern.php)
10.4.觀察者模式:(10.4-ObserverPattern.php)
10.5 命令模式:(10.5-CommandPattern.php)
10.6 策略模式 (10.6-StrategyPattern.php)
10.7 MVC模式
【代碼】【代碼】https://github.com/rxbook/study-php-object/tree/master/code05