JAVA 中模板设计模式的运用

介绍

    在软件开发中,设计模式是一种被广泛采用的方法,用来解决一下常见的设计问题,像平常开发中常用的观察者模式,工厂模式,单例模式等等,也有我们常常会了解到的spring中常用的一些设计模式例如单例模式,工程模式,模板模式,监听者模式,策略模式等等,今天在实际项目中遇到一个模板模式的实际运用,想做一个学习记录。

   模板方法设计模式:是一种行为型设计模式,它定义了一个算法的框架,并允许子类实现其中的具体步骤,在模板方法设计模式中,算法的整体结构在父类中定义,但是具体的步骤实现延迟到子类中。

 总结模板方法设计模式中的主要角色:

1.抽象类(Abstract Class):抽象类定义了算法的框架,其中包含一个或多个抽象方法和模板方法。抽象方法用于延迟到子类实现的具体步骤,而模板方法定义了算法的框架,其中包含一系列的步骤,这些步骤可以是具体方法或抽象方法。

2.具体类(Concrete Class):具体类是抽象类的子类,它实现了抽象方法,完成算法的具体步骤。

具体实现过程

1.定义抽象类
/**
 * 打印机抽象类
 */
public abstract class Printer {

    /**
     * <p>
     * 查询订单打印状态
     * </P>
     *
     * @param orderId 订单id
     * @return String
     */
    public abstract boolean queryOrderState(String orderId);
}
2.具体实现类
@Slf4j
public class FeyPrinter extends Printer {


    @Override
    public boolean queryOrderState(String orderId) {
        return true;
    }
}

 


/**
 * 芯烨云打印机
 */
@Slf4j
public class XyyPrinter extends Printer {

    @Override
    public boolean queryOrderState(String orderId) {
    return true;
    }

}

/**
 * <p>
 * 易联云打印机
 * </P>
 
 * @since 2023/03/22
 */
@Slf4j
public class YlyPrinter extends Printer {
   @Override
    public boolean queryOrderState(String orderId) {
        return true;
    }
}
3.封装调用时候返回的实现对象
      Printer printer = PrinterStrategy.getInstance(deviceEntity.getBrandName());
package com.hkj.printer;

import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.Map;

public class PrinterStrategy {

    private static final Map<String, Printer> printerMap = new HashMap<>();

    private PrinterStrategy(){}

    static {
        printerMap.put("易联云", new YlyPrinter());
        printerMap.put("芯烨云", new XyyPrinter());
        printerMap.put("飞鹅云", new FeyPrinter());
//        printerMap.put("佳博云", new JbyPrinter());
    }

    public static Printer getInstance(String brand){
        if(StringUtils.isBlank(brand) || !printerMap.containsKey(brand)){
            //默认取芯烨云
            return printerMap.get("芯烨云");
        }
        return printerMap.get(brand);
    }

}

总结:

模板方法设计模式虽然有一些潜在的缺点,但它也有许多优点和好处。以下是使用模板方法设计模式的一些优点:

  1. 提供代码复用:模板方法设计模式将通用的算法步骤定义在模板类中,使得子类可以继承这些步骤而无需重复编写相同的代码,从而实现代码的复用。

  2. 封装不变部分:模板方法将算法中的不变部分封装在模板类中,这样可以确保这部分逻辑不受子类的影响,使得系统更加稳定和可靠。

  3. 提高代码可维护性:将算法的框架结构和具体步骤分开,使得代码的维护更加容易。如果需要修改算法的具体步骤,只需要修改子类而不影响其他部分。

  4. 促进代码的扩展性:虽然模板方法本身是固定的,但是通过子类的扩展,可以很容易地新增新的算法步骤,从而增加代码的扩展性。

  5. 遵循开放封闭原则:虽然在某些情况下需要修改模板类,但是对于新增的算法步骤,不需要修改模板类的源代码,符合开放封闭原则。

  6. 易于理解:模板方法设计模式使用了标准化的算法框架,使得代码结构清晰,易于理解和维护。

  7. 避免重复代码:通过将公共的算法步骤提取到模板类中,避免了多个子类中重复编写相同的代码,提高了代码的整体质量。

总体而言,模板方法设计模式适用于需要定义算法框架的情况,能够提高代码的可维护性和复用性。但是,在应用该模式时,需要根据具体的情况权衡其优缺点,并确保模板方法类和子类之间的关系合理,以充分发挥其优势。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值