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

2025-10-06 13:59:05

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 main(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、抽象类虽然后定义了子类必须要做的事情,但是抽象类依然存在有单继承的局限

抽象类的使用必须要通过子类进行对象实例化处理。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢