【设计模式】函数式编程范式工厂模式(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() 方法来获取销售信息。
相关推荐
茂桑3 小时前
DDD领域驱动设计-基础设施层
设计模式·架构
小温冲冲7 小时前
通俗且全面精讲工厂设计模式
设计模式
进击的小头7 小时前
设计模式与C语言高级特性的结合
c语言·设计模式
小温冲冲7 小时前
通俗且全面精讲单例设计模式
开发语言·javascript·设计模式
Vivienne_ChenW8 小时前
DDD领域模型在项目中的实战
java·开发语言·后端·设计模式
sg_knight8 小时前
原型模式(Prototype)
python·设计模式·开发·原型模式
短剑重铸之日9 小时前
《设计模式》第九篇:三大类型之结构型模式
java·后端·设计模式·组合模式·代理模式·结构性模式
忧郁的Mr.Li10 小时前
设计模式--单例模式
javascript·单例模式·设计模式
范纹杉想快点毕业10 小时前
状态机设计模式与嵌入式系统开发完整指南
java·开发语言·网络·数据库·mongodb·设计模式·架构
短剑重铸之日10 小时前
《设计模式》第十篇:三大类型之行为型模式
java·后端·设计模式·责任链模式·访问者模式·行为型模式