上一篇講到
[](http://blog.csdn.net/id19870510/article/details/50397129)[Android SDK開發 -- TitleBar重構 (代理模式的使用](http://blog.csdn.net/id19870510/article/details/50397129)[)](http://blog.csdn.net/id19870510/article/details/50397129)
然后補了一下代理設計模式。參考書籍《大話設計模式》
改善一下之前的代碼設計。
先來定義一個接口
~~~
/**
* AppTitle接口
*
* @author coffee <br>
* 2016-1-2 下午10:17:53
*/
public interface AppTitle {
/**
* 初始化Title view
*/
public void initTitle();
/**
* 設置app的title
*
* @param leftTitle
* @param middleTitle
* @param rightTitle
*/
public void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle);
}
~~~
接口的實現
~~~
public class TitleMgr implements AppTitle {
~~~
TitleMgr的實現參考上一篇文章
然后改善一下BaseActivity的類(該類相當于AppTitle的代理類,TitleMgr是AppTitle的實現類)
~~~
public abstract class BaseActivity extends Activity implements Handler.Callback, AppTitle {
private AppTitle appTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
<span style="white-space:pre"> </span>//....
findViewById();
}
/**
* 初始化title View
*/
protected void findViewById() {
initTitle();
}
@Override
public void initTitle() {
appTitle = new TitleMgr(getContext(), findViewById(android.R.id.content));
appTitle.initTitle();
}
/**
* 設置app的title欄
*
* @param leftTitle
* @param middleTitle
* @param rightTitle
*/
@Override
public void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle) {
appTitle.setTitle(leftTitle, middleTitle, rightTitle);
}
~~~
BaseFragment的實現省略。。與Activity類似
至于為什么要定義一個接口AppTitle,而不是直接拿實現類TitleMgr來用。。
目前表示不是很理解。 ?網上所有的示例都采用接口來實現。。。。。。大概是為了統一代理類和實現類的操作吧。。
- 前言
- Android sdk開發 - 序
- Android sdk開發(一)Application設計
- Android sdk開發(二) Log日志類的設計
- Android SDK開發 (三) App的屬性配置
- android SDK開發-- 功能設計
- android SDK開發 -- TitleBar封裝(一)
- android SDK開發 -- TitleBar封裝(二)
- Android SDK開發 -- TitleBar重構 (代理模式的使用)
- Android SDK開發 -- TitleBar重構 (代理模式-優化)
- android SDK核心功能 -- 消息傳遞與界面刷新
- Android SDK開發 -- TitleBar重構 - 使用策略模式、舍棄代理模式