文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
TitleBar 重构 (代理模式-优化)
然后补了一下代理设计模式。参考书籍《大话设计模式》
改善一下之前的代码设计。
先来定义一个接口
/**
* 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 来用。。
目前表示不是很理解。 网上所有的示例都采用接口来实现。。。。。。大概是为了统一代理类和实现类的操作吧。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论