zoukankan      html  css  js  c++  java
  • 模板设计模式

    1.首先有一个类定义模板

    abstract  class Action {
    	  //操作行为标记
          public static final int EAT=1;
          public static final int SLEEP=3;
          public static final int WORK=5;
          public static final int RUN=7;
          public void order(int flag) {
        	  switch(flag) {
        	  //吃饭
        	  case EAT:
        		  this.eat();
        		  break;
        	  //睡觉
        	  case SLEEP:
        		  this.sleep();
        		  break;
        	  //工作
        	  case WORK:
        		  this.work();
        		  break;
        	  //跑步
        	  case RUN:
        		  this.run();
        		  break;
        	   //狗吃饭睡觉跑步
        	  case EAT+SLEEP+RUN:
        		  this.eat();
        	      this.sleep();
        	      this.run();
        	      break;
        	   //机器人吃饭工作
        	  case EAT+WORK:
        		  this.eat();
        	      this.work();
        	      break;
        	   //人吃饭睡觉跑步工作
        	  case EAT+SLEEP+RUN+WORK:
        		  this.eat();
        	      this.sleep();
        	      this.run();
        	      this.work();
        	      break;
        	  }
          }
          //动作行为
          public abstract void eat();
          public abstract void sleep();
          public abstract void run();
          public abstract void work();
          
    }
    

      这是个抽象类,有四个操作标识,一个命令处理方法 和四个抽像方法,命令处理方法根据操作符进行调用方法。

      2.分别让狗,机器人,人继承模板类,分别实现他们独自的方法

     class Dog extends Action{
    	@Override
    	public void eat() {
    		System.out.println("小狗在吃");
    		}
    	@Override
    	public void sleep() {
    		System.out.println("小狗在睡觉");
    	}
    	@Override
    	public void run() {
    		System.out.println("小狗在跑步");
    	}
    	@Override
    	public void work() {
    		//小狗没有此行为
    	}
        }
    

      

    class Robot extends Action{
    		@Override
    		public void eat() {
    			System.out.println("机器人加油");	
    		}
    		@Override
    		public void sleep() {
    			// TODO Auto-generated method stub	
    		}
    		@Override
    		public void run() {
    			// TODO Auto-generated method stub
    		}
    		@Override
    		public void work() {
    			System.out.println("机器人在工作");
    		}	
    	}
    

      

    class Person extends Action{
    		@Override
    		public void eat() {
    			System.out.println("人在吃饭");	
    		}
    		@Override
    		public void sleep() {
    			System.out.println("人在睡觉");
    		}
    		@Override
    		public void run() {
    			System.out.println("人在跑步");
    		}
    		@Override
    		public void work() {
    			System.out.println("人在工作");
    		}
    	}
    

      3.设计主类

    public class 模板设计模式{
    	public static void main(String[] args) {
    		Action ac1=new Dog();//向上转,体现出抽象编程的好处
    		Action ac2=new Robot();
    		Action ac3=new Person();
    //利用操作符进行方法调用 ac1.order(Action.EAT+Action.RUN+Action.SLEEP); ac2.order(Action.EAT+Action.WORK); ac3.order(Action.EAT+Action.RUN+Action.SLEEP); } }

      

  • 相关阅读:
    streamsets 集成 cratedb 测试
    streamsets k8s 部署试用
    streamsets rest api 转换 graphql
    StreamSets sdc rpc 测试
    StreamSets 相关文章
    StreamSets 多线程 Pipelines
    StreamSets SDC RPC Pipelines说明
    StreamSets 管理 SDC Edge上的pipeline
    StreamSets 部署 Pipelines 到 SDC Edge
    StreamSets 设计Edge pipeline
  • 原文地址:https://www.cnblogs.com/cainame/p/10325830.html
Copyright © 2011-2022 走看看