【设计模式】函数式编程范式工厂模式(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() 方法来获取销售信息。
相关推荐
GISer_Jing1 小时前
AI:多智能体协作与记忆管理
人工智能·设计模式·aigc
雨中飘荡的记忆3 小时前
责任链模式实战应用:从理论到生产实践
设计模式
沛沛老爹6 小时前
Web开发者进阶AI:Agent技能设计模式之迭代分析与上下文聚合实战
前端·人工智能·设计模式
Geoking.7 小时前
【设计模式】装饰者模式详解
设计模式·装饰器模式
vx-bot5556668 小时前
企业微信接口在自动化工作流中的关键角色与设计模式
设计模式·自动化·企业微信
Yu_Lijing9 小时前
基于C++的《Head First设计模式》笔记——工厂模式
c++·笔记·设计模式
HL_风神1 天前
设计原则之迪米特
c++·学习·设计模式
HL_风神1 天前
设计原则之合成复用
c++·学习·设计模式
Aeside11 天前
揭秘 Nginx 百万并发基石:Reactor 架构与 Epoll 底层原理
后端·设计模式
帅气的你1 天前
从零封装一个通用的 API 接口返回类:统一前后端交互格式
java·设计模式