zoukankan      html  css  js  c++  java
  • 抽象类-模板设计模式

    package 抽象类_模板设计模式;
    
    public class Test {
        public static void main(String[] args) {
           Person p=new Person();
           Robbt r=new Robbt();
           Pig pig=new Pig();
           p.command(Action.EAT);
           r.command(Action.EAT);
           pig.command(Action.EAT);
           p.command(Action.WORK);
           r.command(Action.WORK);
           pig.command(Action.WORK);
           p.command(Action.SLEEP);
           r.command(Action.SLEEP);
           pig.command(Action.SLEEP);
        }
    }
    /*
     * 抽象类:只定义了行为(抽象方法),
     *      eat()
     *      work()
     *      sleep()
     *      command()
     *      但没有具体实现,就相当于是给了一个模板类,规则就按照模板上的要求填写,具体怎么写看具体子类
     */
    abstract class  Action {
        
         public static final  int EAT=1;
         public static final  int WORK=5;
         public static final  int SLEEP=10;
        public abstract void eat();
        public abstract void work();
        public abstract void sleep();
        //通过命令确定要执行什么任务,至于任务怎么实现,取决于子类对象
        public  void command(int command){
            switch(command){
              case  EAT:
                  this.eat();
                  break;
              case  WORK:
                  this.work();
                  break;
              case  SLEEP:
                  this.sleep();
                  break;
              case EAT+WORK+SLEEP:
                  this.eat();
                  this.sleep();
                  this.work();
            }
       }
    }
    
    class Pig extends Action{
        @Override
        public void eat() {
           System.out.println("猪吃饲料");    
        }
        @Override
        public void work() {
          
        }
        @Override
        public void sleep() {
           System.out.println("猪睡在圈里");
        }    
    }
    
    class Robbt extends Action{
        @Override
        public void eat() {
           System.out.println("机器人需要吃饭");    
        }
        @Override
        public void work() {
          System.out.println("不停的工作");
        }
        @Override
        public void sleep() {
         
        }    
    }
    class Person extends Action{
        @Override
        public void eat() {
           System.out.println("人需要吃美食");    
        }
        @Override
        public void work() {
          System.out.println("更好努力的工作");
        }
        @Override
        public void sleep() {
           System.out.println("床上睡觉");
        }    
    }
  • 相关阅读:
    cocos2d中sprite动画接口及动画实现思路总结
    iOS开发:小技巧积累
    cocos2d使用定时器
    Eclipse报错:cannot connect to VM
    Myeclipse console 端没有 tomcat 启动的log信息
    MyEclipse Web项目不能自动编译
    在MyEclipse中如何查看Spring/Hibernate/Struts/JDK等源码的方法
    【KMS】查看Windows的环境变量
    【KMS】如何预防用户多次点击提交按钮
    MyEclipse中选择一行的快捷键
  • 原文地址:https://www.cnblogs.com/yuefeng123/p/7706150.html
Copyright © 2011-2022 走看看