【Android】Activity的封装——模版设计模式

99 阅读1分钟

为什么要使用设计模式

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。方便快捷开发。

在没有用到设计模式的情况下,写一个Activity通常都有以下的步骤:

1、创建布局
2、初始化控件
3、初始化数据
4、其他等等

今天我们要说的就是模板设计模式,也是在Android基类中大家常用的一种设计模式。

简单介绍:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 个人理解:某些特定的场合流程是一致的,但是某些细节的东西不太确定。那么这种情况下可以考虑使用模板设计模式

public class BaseActivity extends AppCompatActivity {
    /**
     * 找控件
     */
    protected void initViews(){

    }
    /**
     * 设置数据
     */
    protected void initDatum() {

    }
    /**
     * 设置监听器
     */
    protected void initListeners() {

    }
    /**
     * onPostCreate在onCreate方法后面调用
     * @param savedInstanceState
     */
    @Override
    protected void onPostCreate(@Nullable Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        initViews();
        initDatum();
        initListeners();
    }

}

实际使用案例:以下为一个启动页面

public class SplashActivity extends BaseActivity {

    private TextView copyRightView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
    }

    @Override
    protected void initViews() {
        super.initViews();
        copyRightView = findViewById(R.id.copyright);
        //QMUI 设置沉浸状态栏 没有电量啊这些
        QMUIStatusBarHelper.translucent(this);
        if (SuperDarkUtil.isDark(this)) {
            QMUIStatusBarHelper.setStatusBarDarkMode(this);
        } else {
            //白色状态栏
            QMUIStatusBarHelper.setStatusBarLightMode(this);
        }
    }

    @Override
    protected void initDatum() {
        //设置版本年份
        super.initDatum();
        int year = SuperDataUtil.currentYear();
        copyRightView.setText(getResources().getString(R.string.copyright, year));
    }
}