模板设计模式-抽象类的实际应用

抽象类的最大特点在于强制规定了子类的实现结构,除了这个特点以外,抽象类更多情况下起到一个模板的作用
下面举一个例子:
人 = 吃饭 + 睡觉 + 工作 ;
猪 = 吃饭 + 睡觉 ;
机器人 = 吃饭 + 工作 ;
定义行为类

abstract class Action{ // 描述的是一个抽象的行为
public static final int EAT = 1 ;
public static final int SLEEP = 5 ;
public static final int WORk = 10 ;
public void command(int cmd){
switch(cmd){
case EAT :
this.eat() ;
break ;
case SLEEP :
this.sleep() ;
break ;
case WORk :
this.work() ;
break ;
case EAT + SLEEP + WORk :
this.eat() ;
this.sleep() ;
this.work() ;
break ;
}
}
// 不确定具体实现,但是行为应该定义好
public abstract void eat() ;
public abstract void sleep() ;
public abstract void work() ;
}

定义子类实现

class Person 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() {
// 猪不工作
}
}
class Robot extends Action {
public void eat() {
System.out.println("机器人吃饭,补充能量") ;
}
public void sleep() {
// 机器人不睡觉
}
public void work() {
System.out.println("机器人一直在工作") ;
}
}

定义具体实现

public class Test{
public static void main(String[] args) {
fun(new Person());
fun(new Pig());
fun(new Robot());
}
public static void fun(Action action){
action.command(Action.EAT + Action.SLEEP +Action.WORk) ;
}
}

抽象类在实际的使用过程中会定义一些固化的模式,它只能接收几种特定的指令,但是每种指令的具体实现由子类
完成,父类只给出了行为的约定。
**最具有代表性的就是后面要学习的Servlet
总**
总结:
1. 抽象类虽然定义了子类必须要做的事情,但是抽象类依然会有单继承局限。
2. 抽象类的使用必须要通过子类进行对象实例化处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值