對模板模式理解
模板模式就是定義一個抽象類纫雁,在這個抽象類中定義一些能被子類重寫的抽象方法纲辽,同時定義一個不能被子類重寫榆综,按一定順序執(zhí)行的算法绿店,子類不能改變這個執(zhí)行順序吉懊,但是可以根據(jù)自己的需求對其中的方法進行重寫。
例如電腦從開機到關機要經(jīng)過:
開機->操作電腦->關機
我們不能改變這個順序假勿,但可以對電腦的不同操作借嗽。
對模板模式的一般例子可以參考:https://www.cnblogs.com/qq-361807535/p/6854191.html
下面我主要說的是模板模式在Android開發(fā)中的具體應用,我們都知道在開發(fā)中我們都要寫一個Activity的基類废登,主要抽象了一些我們在寫Activity時都會用到的方法淹魄。
比如,加載布局堡距、初始化View甲锡、初始化一些數(shù)據(jù)等等。
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView();
initView();
initData();
}
/**
* 設置布局
*/
protected abstract void setContentView();
/**
* 初始化View
*/
protected abstract void initView();
/**
* 初始化數(shù)據(jù)
*/
protected abstract void initData();
}
在BaseActivity中定義了3個抽象方法羽戒。
- setContentView:設置布局缤沦,需要子類來實現(xiàn)
- initView:初始化View,需要子類實現(xiàn)
- initData:初始化數(shù)據(jù)易稠,需要子類實現(xiàn)
而在子類中不需要重寫onCreate方法缸废,只需要實現(xiàn)上面的3個方法即可,還有就是如果使用了ButterKnife的話驶社,也只是需要在onCreate加入ButterKnife.bind(this);企量,在子類中就可以使用ButterKnife了。
具體子類的代碼如下:
public class MainActivity extends BaseActivity {
@Override
protected void setContentView() {
setContentView(R.layout.activity_main);
}
@Override
protected void initView() {
}
@Override
protected void initData() {
}
}
模板模式在Android開發(fā)中的應用就到此結(jié)束了亡电。