Java抽象类模板设计模式

例如,现在有三类事物: 
(1)机器人:充电,工作; 
(2)人:吃饭,工作,睡觉; 
(3)猪:进食,睡觉。 
现要求实现一个程序,可以实现三种不同事物的行为

package com.demo;

/**
 * Created by Ranjx on 2018/7/22.
 * 定义一个抽象类
 */
public abstract class Action {
    public static final int EAT = 1;
    public static final int WORK = 3;
    public static final int SLEEP = 5;


    public abstract void eat();
    public abstract void work();
    public abstract void sleep();

    public void commond(int flag) {
        switch (flag) {
            case EAT :
                this.eat();
                break;
            case WORK :
                this.work();
                break;
            case SLEEP :
                this.sleep();
                break;
            default:
                break;
        }
    }
}

 

package com.demo;

/**
 * Created by Ranjx on 2018/7/22.
 * 机器人继承抽象类,强制覆写抽象方法
 */
public class Reboot extends Action{
    @Override
    public void eat() {
        System.out.println("机器人充电");
    }

    @Override
    public void work() {
        System.out.println("机器人工作");
    }

    @Override
    public void sleep() {

    }
}

 

package com.demo;

/**
 * Created by Ranjx on 2018/7/22.
 * 人继承抽象类,强制覆写抽象方法
 */
public class Human extends Action {
    @Override
    public void eat() {
        System.out.println("人吃饭");
    }

    @Override
    public void work() {
        System.out.println("人工作");
    }

    @Override
    public void sleep() {
        System.out.println("人睡觉");
    }
}
package com.demo;

/**
 * Created by Ranjx on 2018/7/22.
 * 猪继承抽象类,强制覆写抽象方法
 */
public class Pic extends Action {
    @Override
    public void eat() {
        System.out.println("猪吃饭");
    }

    @Override
    public void work() {

    }

    @Override
    public void sleep() {
        System.out.println("猪睡觉");
    }
}

 

package com.demo;

/**
 * Created by Ranjx on 2018/7/22.
 * 测试方法
 */
public class ActionTest {

    public static void function(Action a) {
        a.commond(Action.EAT);
        a.commond(Action.WORK);
        a.commond(Action.SLEEP);
    }

    public static void main(String[] args) {
        function(new Reboot());
        function(new Human());
        function(new Pic());
    }
}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值