abstract class Action {
//1对行为进行抽象
public static final int EAT = 1;
public static final int SLEEP = 5;
public static final int WORK = 7;
//3行为类控制子类的操作
public void command(int flag) {
switch (flag) {
case EAT: {
this.eat();
break;
}
case SLEEP: {
this.sleep();
break;
}
case WORK: {
this.work();
break;
}
}
}
public abstract void eat();
public abstract void sleep();
public abstract void work();
}
//2定义行为类下面的具体子类
class Robot extends Action {
public void eat() {
System.out.println("机器人充电");
}
public void sleep() {
}
public void work() {
System.out.println("机器人工作");
}
}
class Human extends Action {
public void eat() {
System.out.println("人吃饭");
}
public void sleep() {
System.out.println("人睡觉");
}
public void work() {
System.out.println("人工作");
}
}
class Pig extends Action {
public void eat() {
System.out.println("猪吃饭");
}
public void sleep() {
System.out.println("猪睡觉");
}
public void work() {
}
}
public class TestDemo {
public static void main(String[] args) {
fun(new Robot());
fun(new Human());
fun(new Pig());
}
public static void fun(Action action) {
action.command(Action.EAT);
action.command(Action.SLEEP);
action.command(Action.WORK);
}
}