码迷,mamicode.com
首页 > 其他好文 > 详细

模板设计模式

时间:2019-01-27 13:06:50      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:out   sleep   根据   string   new   lag   gen   java   extends   

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

  

模板设计模式

标签:out   sleep   根据   string   new   lag   gen   java   extends   

原文地址:https://www.cnblogs.com/cainame/p/10325830.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!