顧名思義:乙個類只應該對一項負責
public
class
singleresponsibility
}class
vehicle
}
上述**vehicle類乙個類承擔了所有交通工具run的功能,並不是合理的設計,需要對其進行分離。
public
class
singleresponsibility2
}class
airvehicle
}class
roadvehicle
}class
watervehicle
}
上述**做到了單一原則,乙個類負責各自的領域,但是改動太大了
public
class
singleresponsibility3
}// 方式3的分析
// 1. 未對原來的類做大的修改,只是增加方法
// 2. 在類的級別上未遵守單一職責,但在方法的級別上遵守了單一職責
class
vehicle2
public
void
runair
(string vehicle)
public
void
runwater
(string vehicle)
}
老師介紹了上面三種改進的方法,如果讓我設計會設計成如下方案:
public
class
singleresponsibility4
}inte***ce
vehicles
class
carimplements
vehicles
}class
boat
implements
vehicles
}class
plane
implements
vehicles
}class
vehcileways
}
命名方式有待商榷
讓介面負責的內容盡可能小,大介面拆分為小介面,避免介面浪費
本質就是面向介面程式設計
比如 class a中的某個方法形參為class b ,那麼以後傳入的引數就只能是class b了, 拓展性差。
但是class a中某個方法形參為class b抽象的介面的話,那麼傳入的引數就是該介面的實現類,易於維護。
package com.qxd.principle.inversion;
public
class
dependyinversion
}class
email
}class
person}*
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
public
class
dependyinversion
}//定義介面
inte***ce
ireceiver
class
email
implements
ireceiver
}class
weixin
implements
ireceiver
}class
person
}
上述兩端**對比即可發現兩者的差距
//開啟或者關閉哪個電視
inte***ce
iopenandclose
inte***ce
itv// 實現介面
class
openandclose
implements
iopenandclose
}
class
openandclose2
public
void
open()
}
設計模式(一) 工廠模式
在物件導向程式設計中,最通常的方法是乙個new操作符產生乙個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下,new操作符直接生成物件會帶來一些問題。舉例來說,許多態別物件的創造需要一系列的步驟 你可能需要計算或取得物件的初始設定 選擇生成哪個子物件例項 或在生成你需要的物件之前必須先...
設計模式(一) 工廠模式
設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使 編制真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。專案中合...
設計模式(一) 工廠模式
編寫出來是為了給別人 client 呼叫的 所以,為了簡化 的協作使用及管理維護,必須想盡辦法簡化 邏輯,實現必要的 分離 下面我分別介紹幾種工廠模式。我們使用手機來作為測試,首先上 圖 public class iphone public class huawei public class opp...