模板设计模式

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); } }

  

    原文作者:cainame
    原文地址: https://www.cnblogs.com/cainame/p/10325830.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞