[TOC]
# 單一職責
一個類而言,只有一個引起他變化的原因.這是個最簡單,最容易理解卻最不容易做到的一個設計原則.說到簡單點,就是怎么設計類以及類的方法界定問題
**單一職責有2個含義:
一個是避免相同的職責分散到不同的類中
另一個是避免一個類承擔太多的職責**
# 遵守SRP原則
1. 可以減少類之間的耦合
2. 提高類的復用性
不遵守SRP會影響對該類的復用性.當只需要復用該類的某一個職責的時候,由于它和其他的職責耦合在一起,也就很難分離出
# SRP應用

工廠模式允許你在代碼執行時實例化該對象.它之所以被稱為工廠模式是因為它負責"生成"對象.以數據庫為例,工廠需要根據不同的參數,生成不同的實例化對象
最簡單工廠就是根據傳入的類型名稱實例化對象,如傳入mysql,就調用mysql,如果是sqllite,就調用sqllite,甚至可以出來txt,excel等數據庫
我們創建數據庫連接這塊單獨拿出來就行了,程序中的CURD就不用關心是什么數據了,只要按照規范使用對象方法即可
**工廠方法讓具體對象解脫出來,使其并不再依賴具體的類,而是抽象**
**設計模式中的命令模式也是SRP的體系,命令模式分離'命令的請求者'和'命令的實現者'方面的職責**
**命令的請求和實現就完成了解耦**
SRP是最簡單的原則之一,也是最難做好的原則之一.我們會很自然的將職責聯系在一起.找到并且分離這些職責是軟件設計需要達到的目的
# MVC


- 書列表
- laravel框架關鍵技術
- 第一章 組件化開發與composer使用
- 簡介
- composer
- 添加路由組件
- 添加控制器模塊
- 添加模型組件
- 添加視圖組件
- 第三章 laravel框架中常用的php語法
- 匿名函數
- 文件包含
- 魔術方法
- 魔術常量
- 反射
- 后期靜態綁定
- traits
- 第四章 laravel框架中使用的HTTP協議基礎
- HTTP協議
- 數據庫
- 數據遷移
- 第六章 laravel框架中的設計模式
- IOC模式
- php核心技術與最佳實踐
- 第一章面向對象核心
- 反射
- 簡單ORM
- 異常和錯誤
- 接口
- 第二章,面向對象設計
- 設計原則
- 單一職責
- 接口隔離
- 開放封閉
- 替換原則
- 依賴倒置
- linux是怎么寫的呢?
- 第三章 正則表達
- 認識正則
- 第四章 php網絡技術應用
- HTTP協議詳解
- php和http相關函數
- 垃圾信息防御措施
- 現代操作系統
- 引論
- sql必知必會
- 限制結果
- 按位置排序
- where求職順序
- IN操作符
- like
- 函數
- group by
- 組合查詢
- 插入檢索出的數據
- 視圖
- 高性能mysql
- 第一章節 mysql架構與歷史
- mysql架構邏輯圖
- 連接與管理
- 優化與運行
- 讀寫鎖
- 鎖粒度
- 表鎖(table lock)
- 行級鎖(row lock)
- ACID
- 隔離級別
- 死鎖
- 隱式和顯式鎖定
- 多版本并發控制
- Innodb概覽
- 第四章節 Schema與數據類型優化
- 選擇優化的數據類型
- 日期和時間類型
- 標識列
- 特殊類型數據
- 表設計中的缺陷
- 范式
- 計數器表
- 第五章 創建高性能索引
- 索引基礎
- 索引類型
- 索引的優點
- 高性能索引策略
- 選擇合適的索引列順序
- 聚簇索引
- 順序的主鍵什么時候會造成更壞的后果
- 覆蓋索引
- 使用索引掃描來做排序
- 壓縮索引
- 冗余和重復索引
- 索引和鎖
- 支持多種過濾條件
- 什么是范圍條件
- 優化排序
- 維護索引和表
- 表損壞
- 減少索引和數據的碎片
- 第六章 查詢性能優化
- 掃描的行數和訪問類型
- 重構查詢方式
- 查詢執行的基礎
- 重構-改善既有代碼設計
- 第一章-重構
- 什么是重構
- 第一個案列
- 重構第一步
- 王垠博客
- 多態取代價格相關邏輯