策略模式#
類圖:
策略模式定義了算法簇,分別封裝起來,讓他們之間可以相互替換,此模式讓算法的變化獨立于使用算法的客戶。
摘自:《Head First design patterns 中文版》Page:24
使用到的面向對象原則:
1.封裝變化
2.多用組合,少用繼承
3.針對接口編程,不針對實現編程
觀察者模式##
類圖:
觀察者獲得數據的兩種方式:
1.ConcreteSubject“推”數據
2.Observer主動“拉”數據
使用到的面向對象原則:
1.封裝變化
2.多用組合,少用繼承
3.針對接口編程,不針對實現編程
4.為交互對象之間的松耦合設計而努力
Java內置的觀察者模式:
import java.util.Observer
1.先調用setChanged方法,標記狀態已經發生改變
2.調用notifyObservers()或者notifyObservers(Object arg)
3.觀察者調用update(Observable o,Object arg)實現更新
Java內置的觀察者模式支持“推”和“拉”兩種方式。
缺點:
1.Observable是一個類,而不是一個接口。Java不支持多繼承,因此某類無法同時繼承Observable和其它超類;
2.因為沒有Observable接口,所以無法建立自己的實現;
3.Observable將關鍵的方法保護起來,這意味著除非繼承自Observable,否則無法創建Observable實例并組合到自己的對象中來。這個設計違反了“多用組合,少用繼承”這個設計原則。
摘自:《Head First design patterns 中文版》Page:71
Activity和Fragment生命周期--Android
Activity生命周期:
Activity:onCreate-->onStart-->onResume-->OnPause-->onStop-->onDestory
按home鍵:onStop,從home返回:onRestart-->onStart-->onResume
按返回鍵:onDestory
從一個ActivityA跳轉到另一個ActivityB:A先onPause,然后B:onCreate-->onStart-->onResume,最后A:onStop
屏幕旋轉:onDestory
Fragment生命周期:
onAttach-->onCreate-->onCreateView-->onActivityCreated-->onStart-->onResume-->onPause-->onStop-->onDestoryView-->onDestory-->onDetach
切換到其它Fragment:onPause-->onStop-->onDestoryView
返回自身:onCreateView-->onActivityCreated-->onStart-->onResume