【设计模式】函数式编程范式工厂模式(Factory Method Pattern)

目录标题

定义函数式接口

  • ISellIPad.java
java 复制代码
/**
 * 定义一个函数式接口
 * @param <T>
 */
@FunctionalInterface
public interface ISellIPad<T> {

    T getSellIPadInfo();

}

函数式接口实现类

  • HuaWeiSellIPad.java
java 复制代码
public class HuaWeiSellIPad implements ISellIPad<String>{
    @Override
    public String getSellIPadInfo() {
        System.out.println("华为IPad:getSellIPadInfo");
        return "华为IPad";
    }
}
  • HuaWeiSellIPad.java
java 复制代码
public class XiaomiSellIPad implements ISellIPad<String>{
    @Override
    public String getSellIPadInfo() {
        System.out.println("小米IPad:getSellIPadInfo");
        return "小米IPad";
    }
}

工厂类封装

  • SellIPadFactory.java
java 复制代码
import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;

/**
 * 创建一个工厂类
 */
public class SellIPadFactory {

    final static Map<String, Supplier<ISellIPad>> map = new HashMap<>();

    static {
        map.put("xiaomi", XiaomiSellIPad::new);
        map.put("huawei", HuaWeiSellIPad::new);
    }

    public static ISellIPad getInstance(String ipadName) {
        Supplier<ISellIPad> iPadSupplier = map.get(ipadName);
        if(iPadSupplier != null) {
            return iPadSupplier.get();
        }
        throw new IllegalArgumentException("No Such ISellIPad " + ipadName);
    }
}

实际应用

  • PinDuoDuoShopV3.java
java 复制代码
public class PinDuoDuoShopV3 {

    public void order(String pcName){
        //函数式编程的好处:减少可变量的声明,能够更好的利用并行,代码更加简洁可读。
        ISellIPad<String> sellIPad = SellIPadFactory.getInstance(pcName);
        String getIpad = sellIPad.getSellIPadInfo();
        System.out.println("PinDuoDuoShopV3=>order=>执行完毕=>"+getIpad);
    }

}

总结

  1. 定义函数式接口(ISellIPad.java):这个接口被 ISellIPad 类型的对象实现,该接口定义了一个 getSellIPadInfo() 方法,用于获取销售 iPad 的信息。
  2. 函数式接口实现类:(HuaWeiSellIPad.java 和 XiaomiSellIPad.java):这些类分别实现了 ISellIPad 接口,提供了针对不同品牌 iPad 的销售信息。
  3. 工厂类封装(SellIPadFactory.java):这个类创建了一个 iPad 工厂,通过传入 iPad 的名称来获取相应的 ISellIPad 实例。它使用了 Java 8 中的 Supplier 函数式接口来提供实例化对象的方法。
  4. 实际应用(PinDuoDuoShopV3.java):这个类展示了如何使用工厂类来订购 iPad。通过调用 SellIPadFactory.getInstance(pcName) 来获取相应品牌的 iPad 实例,然后执行 getSellIPadInfo() 方法来获取销售信息。
相关推荐
千千寰宇14 小时前
[设计模式/Java/多线程] 设计模式之单例模式【9】
设计模式·操作系统-进程/线程/并发
此木|西贝20 小时前
【设计模式】原型模式
java·设计模式·原型模式
高 朗1 天前
2025高频面试设计模型总结篇
设计模式·面试·职场和发展
Summer_Xu2 天前
模拟 Koa 中间件机制与洋葱模型
前端·设计模式·node.js
云徒川2 天前
【设计模式】原型模式
java·设计模式·原型模式
huang_xiaoen2 天前
java设计模式之桥接模式(重生之我在地府当孟婆)
设计模式·桥接模式
HappyGame022 天前
设计模式-观察者模式
观察者模式·设计模式
渊渟岳2 天前
掌握设计模式--解释器模式
设计模式
牵牛老人3 天前
C++设计模式-责任链模式:从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
c++·设计模式·责任链模式
肥仔哥哥19303 天前
设计模式分类与定义(高软55)
设计模式·软考·高软·设计模式分类