java学习-----------------抽象类应用(模板设计)

关于java的学习记录:

/**
 * 抽象类应用-----模板设计
 * 现有三类事物:
 *   机器人:充电、工作
 *   人:吃饭、睡觉、工作
 *   猪:吃饭、睡觉
 * 要求可以实现以上的操作控制,即可以任意的控制人、机器人、猪的操作行为
 * 这些不同的类型最终都在行为上成功的进行了抽象,即:如果要想使用行为操作,那么就必须按照Action
 * 类的标准来实现子类
 */
public class Demo1 {

    public static void main(String[] args) {
        fun(new Robot());
        fun(new Human());
        fun(new Pig());
    }
    public static void fun(Action act) {
        act.command(Action.EAT);
        act.command(Action.SLEEP);
        act.command(Action.WORK);
    }

}
//定义了一个行为类
abstract class Action{
    public static final int EAT=1;
    public static final int SLEEP=5;
    public static final int WORK=7;
    public void command(int flag) {
        //switch只支持数值判断,而if支持条件判断
        switch(flag) {
        case EAT:
            this.eat();
            break;
        case SLEEP:
            this.sleep();
            break;
        case WORK:
            this.work();
            break;
        case EAT+WORK:
            this.eat();
            this.work();
            break;
        }
    }
    public abstract void eat();
    public abstract void sleep();
    public abstract void work();
}
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(){
    }
  
}

猜你喜欢

转载自blog.csdn.net/amuist_ting/article/details/80667008