上一篇讲到

    Android SDK开发 — TitleBar重构 (代理模式的使用

    然后补了一下代理设计模式。参考书籍《大话设计模式》

    改善一下之前的代码设计。

    先来定义一个接口

    1. /**
    2. * AppTitle接口
    3. *
    4. * @author coffee <br>
    5. * 2016-1-2 下午10:17:53
    6. */
    7. public interface AppTitle {
    8. /**
    9. * 初始化Title view
    10. */
    11. public void initTitle();
    12. /**
    13. * 设置app的title
    14. *
    15. * @param leftTitle
    16. * @param middleTitle
    17. * @param rightTitle
    18. */
    19. public void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle);
    20. }
    21.  

    接口的实现

    1. public class TitleMgr implements AppTitle {

    TitleMgr的实现参考上一篇文章

    然后改善一下BaseActivity的类(该类相当于AppTitle的代理类,TitleMgr是AppTitle的实现类)

    1. public abstract class BaseActivity extends Activity implements Handler.Callback, AppTitle {
    2. private AppTitle appTitle;
    3. @Override
    4. protected void onCreate(Bundle savedInstanceState) {
    5. super.onCreate(savedInstanceState);
    6. <span style="white-space:pre"> </span>//....
    7. findViewById();
    8. }
    9. /**
    10. * 初始化title View
    11. */
    12. protected void findViewById() {
    13. initTitle();
    14. }
    15. @Override
    16. public void initTitle() {
    17. appTitle = new TitleMgr(getContext(), findViewById(android.R.id.content));
    18. appTitle.initTitle();
    19. }
    20. /**
    21. * 设置app的title栏
    22. *
    23. * @param leftTitle
    24. * @param middleTitle
    25. * @param rightTitle
    26. */
    27. @Override
    28. public void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle) {
    29. appTitle.setTitle(leftTitle, middleTitle, rightTitle);
    30. }

    BaseFragment的实现省略。。与Activity类似

    至于为什么要定义一个接口AppTitle,而不是直接拿实现类TitleMgr来用。。

    目前表示不是很理解。 网上所有的示例都采用接口来实现。。。。。。大概是为了统一代理类和实现类的操作吧。。