策略模式#
類圖:
策略模式定義了算法簇履恩,分別封裝起來羽圃,讓他們之間可以相互替換梯浪,此模式讓算法的變化獨立于使用算法的客戶牛曹。
摘自:《Head First design patterns 中文版》Page:24
使用到的面向?qū)ο笤瓌t:
1.封裝變化
2.多用組合佛点,少用繼承
3.針對接口編程,不針對實現(xiàn)編程
觀察者模式##
類圖:
觀察者獲得數(shù)據(jù)的兩種方式:
1.ConcreteSubject“推”數(shù)據(jù)
2.Observer主動“拉”數(shù)據(jù)
使用到的面向?qū)ο笤瓌t:
1.封裝變化
2.多用組合黎比,少用繼承
3.針對接口編程超营,不針對實現(xiàn)編程
4.為交互對象之間的松耦合設(shè)計而努力
Java內(nèi)置的觀察者模式:
import java.util.Observer
1.先調(diào)用setChanged方法,標(biāo)記狀態(tài)已經(jīng)發(fā)生改變
2.調(diào)用notifyObservers()或者notifyObservers(Object arg)
3.觀察者調(diào)用update(Observable o,Object arg)實現(xiàn)更新
Java內(nèi)置的觀察者模式支持“推”和“拉”兩種方式阅虫。
缺點:
1.Observable是一個類演闭,而不是一個接口。Java不支持多繼承颓帝,因此某類無法同時繼承Observable和其它超類米碰;
2.因為沒有Observable接口,所以無法建立自己的實現(xiàn)购城;
3.Observable將關(guān)鍵的方法保護起來吕座,這意味著除非繼承自O(shè)bservable,否則無法創(chuàng)建Observable實例并組合到自己的對象中來瘪板。這個設(shè)計違反了“多用組合吴趴,少用繼承”這個設(shè)計原則。
摘自:《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跳轉(zhuǎn)到另一個ActivityB:A先onPause锣枝,然后B:onCreate-->onStart-->onResume,最后A:onStop
屏幕旋轉(zhuǎn):onDestory
Fragment生命周期:
onAttach-->onCreate-->onCreateView-->onActivityCreated-->onStart-->onResume-->onPause-->onStop-->onDestoryView-->onDestory-->onDetach
切換到其它Fragment:onPause-->onStop-->onDestoryView
返回自身:onCreateView-->onActivityCreated-->onStart-->onResume