java:抽象类与模板方法模式详解

一、抽象类概念

1.Java中可以定义没有方法体的方法,该方法由子类来具体实现

2.该没有方法体的方法我们称之为抽象方法,含有抽象方法的类称之为抽象类

二、抽象方法的特点

1.只有方法头没有方法体的方法称为抽象方法

2.抽象方法用abstract来修饰

3.抽象方法代表一种不确定的操作或行为

4.抽象方法不能被调用

三、抽象类的特点

1.定义中含有抽象方法的类叫做抽象类

2.抽象类用abstract来修饰

3.抽象类代表一种抽象的对象类型

4.抽象类并不能实例化

5.抽象类中可以有具体的方法,可以没有抽象方法

四、创建抽象类与抽象方法

抽象类:

在这里插入图片描述

抽象方法:

在这里插入图片描述

五、抽象类与抽象方法的使用

抽象类不能实例化,可以让子类继承抽象类进行实例化

在这里插入图片描述

六、模板方法模式

1. 定义

一个模板方法用一些抽象的操作定义一个算法,二而子类将重定义这些操作以提供具体的行为

2. 意图

模板方法模式定义了一个算法的步骤,并允许一个或多个步骤子类为一个或多个步骤提供其具体行为。

让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。

3. 模式结构

定义抽象类,为所有子类提供一个算法框架

在这里插入图片描述

具体子类,提供工作流程的具体实现

在这里插入图片描述

调用类

在这里插入图片描述

4. 示例

1.定义抽象类,为所有子类提供一个算法框架(当然也可以提供多个算法框架)

2.定义了两个具体子类,每一个子类负责一个平台的工作流程的具体实现

3.调用类就可以根据该套代码运行的平台去选择对应的子类实例化,调用算法框架

package com.demo;

abstract class Control {

//创建模板方法

abstract void initUart();

abstract String getCommand();

abstract void openLight();

abstract void closeLight();

//创建工作流程1

public void work() {

String cmd;

initUart();

cmd = getCommand(); //根据条件执行不同流程

if (cmd == "open") {

openLight();

} else if (cmd == "close") {

closeLight();

}

}

//也可创建N个工作流程

}

class Arduino extends Control {

//工作流程具体实现

void initUart(){

System.out.println("Arduino initUart");

}

String getCommand(){

System.out.println("Arduino getCommand");

return "open";

}

void openLight() {

System.out.println("Arduino openLight");

}

void closeLight() {

System.out.println("Arduino closeLight");

}

}

class RaspberryPi extends Control {

//工作流程具体实现

void initUart(){

System.out.println("raspberryPi initUart");

}

String getCommand(){

System.out.println("RaspberryPi getCommand");

return "close";

}

void openLight() {

System.out.println("raspberryPi openLight");

}

void closeLight() {

System.out.println("raspberryPi closeLight");

}

}

public class Test {

public static void main(String[] args) {

//Arduino执行工作流程

Arduino one = new Arduino();

one.work();

//RaspberryPi执行工作流程

RaspberryPi two = new RaspberryPi();

two.work();

}

}

运行结果:

在这里插入图片描述

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!

以上是 java:抽象类与模板方法模式详解 的全部内容, 来源链接: www.h5w3.com/248564.html

回到顶部