Android 设计模式入门到精通之四:模板方法模式(Template Method)

版权声明:本文为博主原创文章,未经允许不得转载,如有问题,欢迎指正,谢谢! https://blog.csdn.net/cbk861110/article/details/88084325

设计模式项目源码请移步:https://github.com/caobaokang419/WeatherApp(欢迎Github Fork&Star,代码设计模式&框架设计实现不妥之处,请帮忙指正),谢谢!

模板方法模式(Template Method

1. 概念&应用场景

Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses define certain steps of an algorithm without changing the algorithm's structure. 

模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤的实现延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中某些步骤的具体实现。

2. 代码实践(以TaskExecutor机制的Task为例

public abstract class Task<Params ,Result> implements Runnable {
    private final static String TAG = "Task";
    private long mId = 0;
    private Context mContext;

    private Task(Context context, long id){
        mContext = context;
        mId = id;
    }

    @WorkerThread
    protected abstract Result doInBackground(Params... params); //1. 后台任务耗时执行:抽象方法,具体由子类实现

    @UiThread
    protected abstract void onComplete(Result result);//2. 通知UI刷新:抽象方法,具体由子类实现

    @Override
    public final void run() { //3. 算法骨架
        Result result = null;
        try {
            result = doInBackground();
            postComplete(result);
        } catch (Exception e) {
            postComplete(result);
        }
    }

    private void postComplete(final Result result){
        if(TaskExecutor.mUiHandler !=null){
            TaskExecutor.mUiHandler.post(new Runnable(){
                @Override
                public void run() {
                    onComplete(result);
                }
            });
        }
    }
}

猜你喜欢

转载自blog.csdn.net/cbk861110/article/details/88084325