ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
上一篇讲到 [](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来用。。 目前表示不是很理解。  网上所有的示例都采用接口来实现。。。。。。大概是为了统一代理类和实现类的操作吧。。