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

时间:2024-10-14 11:12:42

1、 抽象类的最大特点在于强制规定了子类的实现结构,那么除了这一特点之外,抽象类更多的情况下还可以起到一个模板的作用,下面做一个简单的分析:1、人=吃饭+睡觉+工作;2、猪=吃饭+睡觉;3、机器人=吃饭+工作。那么现在假设有一个按钮控制(方法),一旦传入了某些指令之后就可以进行相应的处理。

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

2、我们定义一个抽象的行为类://描述一个抽象的行为abstract class Action { public static final int 呶蓟鹭毵EAT_FLAG= 1; public static final int SLEEP_FLAG= 5; public static final int WORK_FLAG= 10; public void command(int cmd) { switch (cmd) { case EAT_FLAG: this.eat(); break; case SLEEP_FLAG: this.sleep(); break; case WORK_FLAG: this.work(); break; case EAT_FLAG + SLEEP_FLAG + WORK_FLAG: this.eat(); this.sleep(); this.work(); default: break; } } //不确定具体的实现,但是行为应该定义好 public abstract void eat(); public abstract void sleep(); public abstract void work();}

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

3、定义人的行为的子类。//人class Human extends Action { @Override public void eat() { System.out.println("人吃饭要吃熟食,干净的食物!"); } @Override public void sleep() { System.out.println("人困了就要睡觉。"); } @Override public void work() { System.out.println("人要努力拼搏。"); } }

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

4、定义猪的行为的子类。//猪class Pig extends Action { @Override public void eat() { System.out.println("猪用槽子吃,吃糠"); } @Override public void sleep() { System.out.println("猪在圈里睡觉。"); } @Override public void work() { } }

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

5、定义机器人的行为子类://机器人class Robbbot extends Action { @Override public void eat() { System.out.println("机器人补充能量。"); } @Override public void sleep() { } @Override public void work() { System.out.println("机器人不停工作"); } }

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

6、调用各自的行为操作。public class TemplateDesign { public static void m锾攒揉敫ain(String[] args) { fun(new Human()); fun(new Pig()); fun(new Robbbot()); } public static void fun(Action action) { action.command(Action.EAT_FLAG+Action.SLEEP_FLAG + Action.WORK_FLAG); }}

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

7、实际上通过此程序的定义结构你可以清楚发现一个问题:1、抽象类在实际的使用过程之中会定义一些固话的模式,它只能接收几种特定的指令。2、但是每种指令的具体实现由子类负责完成,父类只做了方法的约定。这个最具有代表性的就是Servlet程序。

8、抽象类虽然后定义了子类必须要做的事情,但是抽象类依然存在有单继承的局限抽象类的使用必须要通过子类进行对象实例化处理。

© 手抄报圈