抽象类应用 —— 模版设计模式

  现在假设有三类现实的事物(或者是更多的事物):

     Ø  机器人(Robot):具备充电、工作两个基本操作;

     Ø  人类(Human):具备吃饭、工作、睡觉三个基本操作;

     Ø  猪(Pig):具备吃饭、睡觉两个基本操作。


定义的一个行为类

abstract class Action {					// 定义一个抽象的行为类,行为不是具体的
	// 定义常量时必须保证两个内容相加的结果不是其它行为,例如:EAT + SLEEP的结果为6不会和其它值冲突
	public static final int EAT = 1;	// 定义吃的命令
	public static final int SLEEP = 5;	// 定义睡的命令
	public static final int WORK = 7;	// 定义工作的命令
	public void command(int flag) {
		switch (flag) {	// switch只支持数值判断,而if支持条件判断
		case EAT:	// 当前为吃的操作
			this.eat();// 调用子类中具体的“吃”方法
			break;
		case SLEEP:	// 当前为睡的操作
			this.sleep();	// 调用子类中具体的“睡”方法
			break;
		case WORK:	// 当前为工作的操作
			this.work();// 调用子类中具体的“工作”方法
			break;
		case EAT + WORK:	// 行为组合,本处只是举例说明,不演示
			this.eat();	// 调用“吃”的方法
			this.work();// 调用“工作”的方法
			break;
		}
	}
	public abstract void eat();	// 定义子类的操作标准
	public abstract void sleep();	// 定义子类的操作标准
	public abstract void work();	// 定义子类的操作标准
}

定义描述机器人的行为子类

class Robot extends Action {			// 定义机器人行为
	public void eat() {		// 覆写行为的操作
		System.out.println("机器人补充能量!");
	}
	public void sleep() {	// 此操作不需要但必覆写,所以方法体为空
	}
	public void work() {		// 覆写行为的操作
		System.out.println("机器人正在努力工作!");
	}
}

定义人的类

class Human extends Action {			// 定义人类行为
	public void eat() {		// 覆写行为的操作
		System.out.println("人类正在吃饭!");
	}
	public void sleep() {		// 覆写行为的操作
		System.out.println("人类正在睡觉休息!");
	}
	public void work() {		// 覆写行为的操作
		System.out.println("人为了梦想在努力工作!");
	}
}

定义猪的类

class Pig extends Action {
	public void eat() { 		// 覆写行为的操作
		System.out.println("猪正在啃食槽!");
	}
	public void sleep() { 			// 覆写行为的操作
		System.out.println("猪在睡觉养膘!");
	}
	public void work() {		// 此操作不需要但必覆写,所以方法体为空
	}
}

测试行为

public class TestDemo {
	public static void main(String args[]) {
		fun(new Robot());	// 传递机器人行为子类
		fun(new Human());	// 传递人类行为子类
		fun(new Pig());	// 传递猪的行为子类
	}
	/**
	 * 执行具体的操作行为,假设本处只执行EAT、SLEEP、WORK三个行为
	 * act 具体的行为对象
	 */
	public static void fun(Action act) {
		act.command(Action.EAT);		// 调用“吃”操作
		act.command(Action.SLEEP);		// 调用“睡”操作
		act.command(Action.WORK);		// 调用“工作”操作
	}
}


程序执行结果:

机器人补充能量!(机器人行为)

机器人正在努力工作!(机器人行为)

人类正在吃饭!(人类行为)

人类正在睡觉休息!(人类行为)

人为了梦想在努力工作!(人类行为)

猪正在啃食槽!(猪行为)

猪在睡觉养膘!(猪行为)






  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值