默寫:
1.建立 Class對象的四種方式
2.通過Class 對象 如何建立對應的java類型的執行個體?
newInstance() 最終調用構造方法
3.如何通過Class 對象擷取構造函數類型的對象 如何獲得字段類型的對象
如何擷取方法類型的對象
getConstructor getDeclaredConstructor getConstructors
getField getDeclaredField getFields
getMethod getDeclaredMethod getMethods
4.Class 對象 擷取到方法對象之後 如何調用這個方法
invoke(對象,變長參數)
今日内容:
1.設計模式的設計原則
1.1 開閉原則 (open close principle)
對擴充開放 對修改關閉 (車的電路 盡量不要去改動 如果對預留的接口擴充功能是可以的)
因為修改原來的代碼 更容易引入 bug
1.2 裡氏代換 (liskvo substitution principle )
任何基類(父類) 出現的地方 都可以使用 派生類 (子類) 替代
子類對象 is a 父類對象
1.3 依賴倒轉原則 (Dependence inverse principle)
程式設計盡量的依賴于 接口 或者 抽象類 而不應該依賴于 具體的實作類
可以給程式帶來更大的靈活性
public class AnimalTest{
public void test1(Animal animal){
//dog.watchHome();
animal.fun();
}
}
1.4 接口隔離原則(Interface Segregation Principle)
盡量使用小接口 而不要使用一個很大的接口 包含很多功能
可以避免接口污染
public Interface IRun{
void run();
}
public Interface IAttack{
void attack();
}
1.5、迪米特法則(最少知道原則)(Demeter Principle)
程式設計 盡量遵循 高内聚 低耦合(盡量減少與其它元件的關聯 )
1.6 合成複用原則(Composite Reuse Principle)
盡量使用 組合 或者 聚合 而盡量減少使用 繼承
組合 兩個元件生命期互相依賴 汽車 發送機 人 和 大腦
聚合關系 兩個元件生命期關系不強 汽車 has a 收音機
這兩個都是 一個 has a
class Radio{
public void radio(){
// 收聽廣播
}
}
public class Car {
private Radio r;
public void play(){
r.radio();
}
}
2.設計模式
2.1 概念
進過前人反複使用,經過反複驗證,被多數人認可的,并且分類編目的 一個代碼設計經驗的總結.
2.2 設計模式的分類
建立型:工廠模式(一個工廠有多條生産線) 抽象工廠模式(一個工廠隻有一條生産線) 單例模式 (掌握)
結構型:裝飾器模式 代理模式(動态代理) 組合模式 (熟悉)
行為模式: 疊代器模式 觀察者模式 模闆模式 (了解)
3.查找算法
3.1 線性查找
從前往後 依次對比需要查找的資料 如果找到對應的元素 則傳回元素的位置
練習:
設計一個方法 傳入一個整數數組 然後傳入要查找的資料 傳回資料在數組中的位置
如果數組中沒有這個數組 則 傳回 -1
3.2 二分查找
a.要求數列中的資料 保持有序
b.求出數列中 中間下标 對應的元素 進行比較
c.如果中間下标對應的下标元素 等于 目标元素 則直接傳回位置
d.如果中間下标對應的元素 大于 目标元素 左側重複 b
e.如果中間下标對應的元素 小于 目标元素 則右側重複 b
f.如果查找完所有的元素 都沒有目标元素 則傳回 -1
4.排序算法
4.1 冒泡排序
核心思想:相鄰的元素進行比較 滿足條件 就進行交換 如果一趟排序中沒有出現元素交換
則排序完成。
4.2 快速排序
a.記錄左右兩側的下标 求出中間下标 和 中間下标對應的值 然後單獨保留中間下标對應的值
b.從左側 依次取出值 直到有一個元素 大于 中間值 就把大的資料 放到 中間下标對應的位置
立即把 中間下标 移動到 有元素移動的位置。
c.如果左側發生了元素移動 則立即從右側開始 依次查找比中間元素小的 找到之後 把資料
移動到中間下标所在的位置。并且把中間下标執行到 移動元素的位置。然後重複 b。
d.最終 左側 中間 和 右側重合 則把保留的中間 放到重合位置。
e.使用遞歸處理左右兩側。
視訊
javaseday23-1.設計原則
https://v.qq.com/txp/iframe/player.html?vid=g0800nudve3
javaseday23-2.設計模式介紹
https://v.qq.com/txp/iframe/player.html?vid=x0800is8457
javaseday23-3.工廠模式的實作
https://v.qq.com/txp/iframe/player.html?vid=d0800ic7gls
javaseday23-4.線性查找和二分查找
https://v.qq.com/txp/iframe/player.html?vid=x0800zynoy2
javaseday23-5.冒泡排序和快速排序介紹
https://v.qq.com/txp/iframe/player.html?vid=q0800greymj
代碼
https://pan.baidu.com/s/1F3kSEgjCESsTHuHm2pTWTg