设计模式

设计模式-模板模式

2020-05-07  本文已影响0人  isLJli

模板模式定义

定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
白话讲:重点在“模板”两字,就是做成一件事需要通过n个步骤,那么可以定义一个模板父类,子类通过继承父类的实现n个步骤,但每个步骤中可以自己实现功能

举例

吃完饭可以分三个步骤:盛饭、夹菜、吃饭,我们就可以定义一个模板定义这三个行为。
但子类可以在盛饭时选择盛(白米饭、紫米饭),夹菜可以选择(青菜、肉等),吃饭可以用筷子、勺子等。

源码中的模板模式

1.Activity的生命周期
Activity类在继承Activity后,所有的子类的生命周期都一样。一些基类的Activity也是同样的道理,把子类中共有的方法放在基类中。

public abstract class BaseActivity extends AppCompatActivity {
  
  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      hookContentView();
      setContentView(); //设置布局
      initTitle(); //加载头布局
      initView(); //初始化布局
      initData(savedInstanceState); //加载数据
      //还可以写一些公用的方法 butterKnife注解,统一管理Activity等等
  }

  protected  void hookContentView(){}

  protected abstract void setContentView();

  protected abstract void initTitle();

  protected abstract void initView();

  protected abstract void initData(Bundle savedInstanceState);
}

2.官方提供的异步类AsyncTask
把耗时的操作放在doInBackground(Params... params)中,继承时它会以此调用onPreExecute,doInBackground,onPostExecute,当然你也可以通过onProgressUpdate来更新进度。
原理大致是通过线程池去执行耗时操作,然后通过Handler切换线程来更新进度。

上一篇下一篇

猜你喜欢

热点阅读