java设计模式——模板方法模式

模板方法模式是一个使用非常广泛的设计模式,比较简单,它主要是定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。我们这里以不同的人的每天来举例:
首先定义一个类,类中定义了 起床getUp()、洗漱Washing()、生活方式process()、睡觉sleeping()四个基本的通用方法,由于不同工作的人他的生活方式是不同的,所以我们将其方法定义为抽象方法,oneDay()是我们这里定义的模板方法,人的一天先起床 后洗漱 ,… ,再睡觉,代码如下:

public abstract class OneDaysWorking {
    protected String name;

    protected  void getUp() {
        System.out.println(name + "起床");
    }

    protected void Washing() {
        System.out.println(name + "洗漱");
    }

    public abstract void process();

    public void oneDay() {
        this.getUp();
        this.Washing();
        this.process();
        this.sleeping();
    }

    protected void sleeping() {
        System.out.println(name + "睡觉");
    }
}

我们再定义三种不同的人群,学生、白领、工人:

/**
 * 学生类
 */
public class Student extends OneDaysWorking {
    public Student(String name) {
        this.name = name;
    }

    public void process() {
        System.out.println(name + "上学");
    }
}

/**
 * 白领类
 */
public class WhiteCollar extends OneDaysWorking{
    public WhiteCollar(String name) {
        this.name = name;
    }

    public void process() {
        System.out.println(name+"上班");
    }
}

/**
 * 工人类
 */
public class Worker extends OneDaysWorking {
    public Worker(String name) {
        this.name = name;
    }

    public void process() {
        System.out.println(name + "做工");
    }
}

测试代码如下:

public class TempModelTest {
    public static void main(String[] args) {
        Student student = new Student("学生");
        student.oneDay();
        WhiteCollar whiteCollar = new WhiteCollar("白领");
        whiteCollar.oneDay();
        Worker worker = new Worker("工人");
        worker.oneDay();
    }
}

输出结果如下:

学生起床
学生洗漱
学生上学
学生睡觉
白领起床
白领洗漱
白领上班
白领睡觉
工人起床
工人洗漱
工人做工
工人睡觉

恭喜你!学会了模板方法模式!喜欢的关注一波啦~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值