極客時間《設計模式之美》學習
如何進行面向對象設計?
在面向對象設計階段破喻,我們將需求描述轉化為具體的類虎谢。可以包含以下幾部分:
- 劃分職責進而識別出有哪些類曹质;
- 定義類及其屬性和方法婴噩;
- 定義類與類之間的交互關系;
- 將類組裝起來羽德,并提供執(zhí)行入口几莽。
劃分職責進而識別出類
根據(jù)需求描述,把其中涉及的功能點宅静,一個個羅列出來章蚣,然后去看哪些功能點職責相近,操作同樣的屬性姨夹,是否應該歸為同一個類纤垂。
注意:拆解出來的功能點要盡可能的小,每個功能點只負責做一件很小的事情磷账。
定義類機器屬性和方法
對于方法識別峭沦,我們可以這么做:識別出需求描述中的動詞,作為候選的方法够颠,再進一步過濾篩選熙侍。類比方法識別,可以把功能點中涉及的名詞履磨,作為候選屬性蛉抓,然后同樣進行過濾篩選。
定義類與類之間的交互關系
一般有四種關系:泛化剃诅、實現(xiàn)巷送、組合、依賴矛辕。
1.泛化
可以理解為繼承笑跛。
public class A{}
public class B extends A{}
2.實現(xiàn)
可以理解為接口。
public interface A{}
public class B implements A{}
3.組合
1.A包含B聊品,B對象生命周期不依賴A對象聲明周期:
public class A {
private B b;
public A(B b) {
this.b = b;
}
}
2.A包含B飞蹂,B對象生命周期依賴A對象的生命周期:
public class A {
private B b;
public A() {
this.b = new B();
}
}
4.依賴
是一種比組合更弱的關系,只要B類對象和A類對象有任何使用關系翻屈,我們都稱他們有依賴關系陈哑。
比如:
public class A {
public void func(B b){}
}