【设计模式】函数式编程范式工厂模式(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() 方法来获取销售信息。
相关推荐
Carl_奕然8 小时前
【智能体】Agent的四种设计模式之:React(2026最新版)
javascript·人工智能·python·react.js·设计模式·语言模型
cfm_29148 小时前
Spring核心设计模式
java·spring·设计模式
码匠许师傅1 天前
【设计模式精讲】15.享元模式(Flyweight)
c++·设计模式·享元模式·uml
事圆则缓1 天前
Android 常用设计模式速查
android·设计模式
码匠许师傅2 天前
【设计模式精讲】14.外观模式(Facade)
c++·设计模式·uml·外观模式
evans在进步2 天前
Java 常用设计模式(二):装饰器、适配器、责任链、模板方法、策略与观察者
java·开发语言·设计模式
码匠许师傅2 天前
【设计模式精讲】13.装饰器模式(Decorator)
c++·设计模式·uml·装饰器模式
evans在进步3 天前
Java 常用设计模式入门:建造者、工厂、单例、外观与代理
java·python·设计模式
字节跳动开源3 天前
VisActor全新图可视化开源项目:VGraph
前端·设计模式·开源
码匠许师傅3 天前
【设计模式精讲】11.桥接模式(Bridge)
c++·设计模式·桥接模式·uml