安卓系列之设计模式:模板模式

131 阅读1分钟

定义

父类提供一个统一的方法调用一系列方法,子类可以按需重新方法实现,该模式属于行为型模式。

应用场景

多个类有很多共通的方法和差不多的流程。

优点

1.避免重复的代码
2.方便管理统一的方法

缺点

可能会导致子类数量过多

常见实例

1.BaseActivity中的抽象方法,例如:initListener()

具体代码实现

例子说明:运动一般都有一套流程差不多,比如先热身,然后准备运动,然后运动,再然后结束,最后休息一下。

抽象类

package com.elaine.testpattern.template;

/**
 * 运动
 * author: elaine
 * date: 2021/4/28
 */
public abstract class Sport {
    //热身
    protected abstract void ready();

    //开始
    protected abstract void start();

    //运动
    protected abstract void exercising();

    //结束
    protected abstract void end();

    //休息
    protected abstract void rest();

    //锻炼
    public final void exercise() {
        ready();
        start();
        exercising();
        end();
        rest();
    }
}

实体类

打乒乓球运动

package com.elaine.testpattern.template;

import android.util.Log;

/**
 * 打乒乓球
 * author: elaine
 * date: 2021/4/28
 */
public class PlayTableTennis extends Sport {

    @Override
    protected void ready() {
        Log.e("运动===""热身");
    }

    @Override
    protected void start() {
        Log.e("运动===""乒乓球开始运动");
    }

    @Override
    protected void exercising() {
        Log.e("运动===""乒乓球运动中");
    }

    @Override
    protected void end() {
        Log.e("运动===""乒乓球结束运动");
    }

    @Override
    protected void rest() {
        Log.e("运动===""打球结束休息");
    }
}

跑步

package com.elaine.testpattern.template;

import android.util.Log;

/**
 * 跑步
 * author: elaine
 * date: 2021/4/28
 */
public class Run extends Sport {

    @Override
    protected void ready() {
        Log.e("运动===""热身");
    }

    @Override
    protected void start() {
        Log.e("运动===""跑步开始");
    }

    @Override
    protected void exercising() {
        Log.e("运动===""跑步中");
    }

    @Override
    protected void end() {
        Log.e("运动===""跑步结束");
    }

    @Override
    protected void rest() {
        Log.e("运动===""跑步结束休息");
    }
}

运行代码

private void use() {
    Sport sport = new PlayTableTennis();
    sport.exercise();

    Sport run = new Run();
    run.exercise();
}

运行结果

图片

若帅哥美女对该系列文章感兴趣,可微信搜索公众号(木子闲集)关注更多更新文章哦,谢谢~