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

网友投稿 289 2022-12-12

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

目录一、抽象类概念二、抽象方法的特点三、抽象类的特点四、创建抽象类与抽象方法抽象类:抽象方法:五、抽象类与抽象方法的使用六、模板方法模式1. 定义2. 意图3. 模式结构4. 示例总结

一、抽象类概念

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();

}

}

运行结果:

总结

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JAVA熔断和降级真实关系的图文详解
下一篇:详细谈谈Spring事务是如何管理的
相关文章

 发表评论

暂时没有评论,来抢沙发吧~