テンプレート設計モード(一)-定義およびソースコードで使用されるテンプレート設計モード
3472 ワード
前言
テンプレート設計モードシリーズ文章テンプレート設計モード(一)-定義及びソースコードに用いられるテンプレート設計モードテンプレート設計モード(二)-スレッドプール動作機構テンプレート設計モード(三)-OkHttpのDispatcher(ラインプール)
1.テンプレート設計モード定義?
操作中のアルゴリズムのフレームワークを定義し、いくつかのステップをサブクラスに遅延します.サブクラスがアルゴリズムの構造を変更することなく、アルゴリズムの特定のステップを再定義することができる.
はっきり言って、継承しなければなりません.親は一般的にプロセスと汎用部分のパッケージで、子は一般的に親を実現する方法で、それから自分の具体的な機能を実現します.
2.ソースコードに使われるテンプレートのデザインパターンは?
1>:ActivityのライフサイクルはまずAppCompatActivityから継承されており、そのプロセスと仕様はすでに定義されており、私たちが定義するActivity(MainActivity、LoginActivity、RegisterActivityなどのすべてのActivity)のライフサイクルのプロセスと仕様はAppCompatActivityと同じであることが要求されています. 私たちが定義したActivityごとに異なるインタフェースを定義することができ、具体的な論理を実現することができます.
2>: AsyncTask
3>:Viewのdraw()メソッドをカスタマイズする ViewGroupはonDraw()メソッドを呼び出さない です.ビューでは、dispatchDraw()を呼び出し、子を描く、子ビューを繰り返し呼び出すdraw()メソッドです.このメソッドは何も書かれていません.私たちは自分のニーズに合わせて を実現することができます.
具体的には私の前の文章を参照してください:(ST)Viewの描画プロセス-onDraw()ソースコード分析
4>:BaseActivity
3.開発中のBaseActivity
1>:親BaseActivityコードは次のとおりです.
2>:サブクラスMainActivityコードは次のとおりです.
コードはgithubにアップロードされましたhttps://github.com/shuai999/Architect_day12.git
テンプレート設計モードシリーズ文章テンプレート設計モード(一)-定義及びソースコードに用いられるテンプレート設計モードテンプレート設計モード(二)-スレッドプール動作機構テンプレート設計モード(三)-OkHttpのDispatcher(ラインプール)
1.テンプレート設計モード定義?
操作中のアルゴリズムのフレームワークを定義し、いくつかのステップをサブクラスに遅延します.サブクラスがアルゴリズムの構造を変更することなく、アルゴリズムの特定のステップを再定義することができる.
はっきり言って、継承しなければなりません.親は一般的にプロセスと汎用部分のパッケージで、子は一般的に親を実現する方法で、それから自分の具体的な機能を実現します.
2.ソースコードに使われるテンプレートのデザインパターンは?
1>:Activityのライフサイクル
2>: AsyncTask
/**
* doInBackground ,
*/
class Task extends AsyncTask{
/**
*
*/
@Override
protected Object doInBackground(Object[] params) {
return null;
}
/**
*
*/
@Override
protected void onPreExecute() {
super.onPreExecute();
}
/**
* handler
*/
@Override
protected void onPostExecute(Object object) {
super.onPostExecute(object);
}
/**
*
*/
@Override
protected void onProgressUpdate(Object[] values) {
super.onProgressUpdate(values);
}
}
3>:Viewのdraw()メソッドをカスタマイズする
具体的には私の前の文章を参照してください:(ST)Viewの描画プロセス-onDraw()ソースコード分析
4>:BaseActivity
3.開発中のBaseActivity
1>:親BaseActivityコードは次のとおりです.
/**
* Email: [email protected]
* Created by Novate 2018/5/13 9:46
* Version 1.0
* Params:
* Description:
*/
public abstract class BaseActivity extends AppCompatActivity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 1.
setContentView() ;
/**
* :
* , true, false
*/
if (flagTest()) {
// 2. Title
initTitle();
}
// 3. View
initView() ;
// 4.
initData(savedInstanceState) ;
}
protected boolean flagTest() {
return true;
}
protected abstract void initData(Bundle savedInstanceState);
protected abstract void initView();
protected abstract void initTitle();
protected abstract void setContentView() ;
public void startActivity(Class extends BaseActivity> clazz) {
Intent intent = new Intent(this,clazz);
startActivity(intent);
}
}
2>:サブクラスMainActivityコードは次のとおりです.
public class MainActivity extends BaseActivity {
@Override
protected void initData(Bundle savedInstanceState) {
}
@Override
protected void initView() {
}
@Override
protected void initTitle() {
}
@Override
protected void setContentView() {
}
/**
* : , false, true
*/
@Override
protected boolean flagTest() {
return false;
}
}
コードはgithubにアップロードされましたhttps://github.com/shuai999/Architect_day12.git