标签: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