【设计模式】函数式编程范式工厂模式(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() 方法来获取销售信息。
相关推荐
饕餮争锋5 小时前
设计模式笔记_行为型_访问者模式
笔记·设计模式·访问者模式
写bug写bug15 小时前
你真的会用枚举吗
java·后端·设计模式
哆啦code梦15 小时前
趣谈设计模式之策略模式-比特咖啡给你一杯满满的情绪价值,让您在数字世界里”畅饮“
设计模式·策略模式
华仔啊19 小时前
别学23种了!Java项目中最常用的6个设计模式,附案例
java·后端·设计模式
Keya1 天前
MacOS端口被占用的解决方法
前端·后端·设计模式
已读不回1431 天前
设计模式-单例模式
前端·设计模式
long3162 天前
构建者设计模式 Builder
java·后端·学习·设计模式
一乐小哥2 天前
从 JDK 到 Spring,单例模式在源码中的实战用法
后端·设计模式
付春员2 天前
23种设计模式
设计模式
桦说编程3 天前
方法一定要有返回值 \ o /
java·后端·函数式编程