Java聽課筆記——10.30
感覺今天沒講什麼東西唉......
一開始,解釋了一下ArrayList裡的每個元素如果不進行型別約束的話
自然賦值為Object類,而且是兼收幷蓄的
同時講了使用迭代器對ArrayList陣列進行遍歷,直接上程式碼
講了設計模式
1.UML
2.設計原則
基本原則 |
英文全拼 |
中文名稱 |
SRP |
The Single Responsibility Principle |
單一職責 |
OCP |
The Open Closed Principle |
開放封閉 |
LSP |
The Liskov Substitution Principle |
里氏替換 |
ISP |
The Interface Segregation Principle |
介面分離 |
DIP |
The Dependency Inversion Principle |
依賴倒置 |
SRP 單一職責: 一個類只做一件事,只有一個原因使它變化 否則後果:破壞高內聚、低耦合
OCP 開放封閉原則 適時地開方封閉 對擴充套件開方對修改關閉
然後老師寫了一段程式碼進行解釋:
例如實現加減乘除運算
定義一個Calculator介面,這個介面只有一個方法
你可以在繼承中擴充套件它,但是不去修改它的原始碼
然後在定義加減乘除類進行繼承後實現各自的具體方法
然而,對各個運算函式的操作不是裸的,而是用另外的方法包裹——Client類
在實現的時候先定義一個加法器ad,在呼叫Client做加法
講了這麼多就是為了讓我們理解這個原則
LSP 里氏替換原則 子型別能夠完全替換父型別,而不讓呼叫父型別的客戶程式從行為上有任何改變
老師為了讓我們理解,就講了一個反例
父類為bird類
子類為Ostrich類
許多屬性並不能完全替代父類,比如鴕鳥不會飛
ISP原則 介面隔離原則 不應該讓使用者實現其不用的方法,介面的方法利用率要高,數量要少
DIP原則 依賴倒置原則
其實就是設計思路的問題
要針對介面程式設計,不要針對實現程式設計。
使用介面和抽象類而不是具體類
是不是就是面向物件的意思?
今天就講了這些