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("床上睡觉");
        }    
    }
  • 相关阅读:
    [Java]内部类
    [Java]项目经验之谈
    [IDE]Netbeans
    [HTML5游戏开发]开发者如何真正的面向HTML5平台开发游戏?
    [HTML5游戏开发]两款很棒的 HTML5 游戏开发工具
    [HTML5游戏开发]HTML5游戏让你惊喜吗?
    How To Design A Mobile Game With HTML5
    [WebSimpleDB]HTML5之IndexedDB使用详解
    [HTML5]WAI-ARIA介绍
    [MiniPro]Android GPS-从上到下整个框架剖析与案例解说
  • 原文地址:https://www.cnblogs.com/yuefeng123/p/7706150.html
Copyright © 2011-2022 走看看