简单工厂模式

一、简介

简单工厂模式(Simple Factory Pattern)属于类的创建型模式,又叫静态工厂方法模式(Static Factory Method Pattern),但不属于23种GOF设计模式之一。它提供了一个简单的工厂类来创建不同产品类的实例,这些产品类通常都具有共同的父类或者实现了共同的接口。它通过将对象的创建过程封装在工厂类中,使得客户端可以通过调用工厂类的静态方法来创建不同类型的对象。

在简单工厂模式中,有三个重要的角色:

  1. 工厂类:包含一个静态方法,根据不同的参数返回不同的对象。
  2. 产品接口或抽象产品类。
  3. 具体产品类。

1.1 优点

  • 可以根据工厂类灵活创建对象,且封装了对象的创建过程,使得客户端无需了解对象的创建细节。
  • 分离了对象的创建和使用,降低模块的耦合度。

1.2 缺点

  • 由于工厂类集中了所有实例的创建逻辑,这就直接导致一旦这个工厂出了问题,所有的客户端都会受到牵连。
  • 严重的是,每新增一种产品,就必须修改工厂类代码,违背了开闭原则,同时导致系统丧失灵活性和可维护性。

1.3 适用场景

  • 需要隐藏对象的创建细节的场景。
  • 需要统一管理对象的创建过程,避免重复代码。
  • 产品种类比较固定,不需要轻易修改工厂类。

二、实现案例

实现一个水果工厂,该工厂产生两种水果:水果和香蕉。

工厂类

public class StaticFruitFactory {
    public static Fruit createFruit(String type) {
        if(type.equalsIgnoreCase("apple")) {
            return new Apple();
        } else if(type.equalsIgnoreCase("banana")) {
            return new Banana();
        } else {
            System.out.println("哎呀!找不到相应的实例化类啦!");
            return null;
        }
    }
}

产品接口和其实现

//水果的接口
public interface Fruit {
    public void printPrice();
}

//苹果实体类
public class Apple implements Fruit{
    @Override
    public void printPrice() {
        System.out.println("Apple: $12");
    }
}
//香蕉实体类
public class Banana implements Fruit{
    @Override
    public void printPrice() {
        System.out.println("Banana: $12");
    }
}

测试

public class Test {
    public static void main(String[] args) {
        Fruit fruit=StaticFruitFactory.createFruit("banana");
        fruit.printPrice();
    }
}

三、总结

好了,亲爱的读者朋友们,经过本篇博客文章的学习,相信大家已经对简单工厂模式有了深入的理解。简单工厂模式就像是一个“万能工厂”,它可以生产各种不同的产品,客户端只需要提供产品的类型或参数,工厂就会根据这些信息来创建具体的产品,非常适合统一管理对象的创建过程。但是,简单工厂模式也有一些限制和缺点,例如无法满足系统扩展性要求、工厂类职责过重等问题,需要在具体应用中仔细考虑是否使用该模式。

感谢您的阅读,如果觉得本篇文章对您有所帮助,请分享给更多的朋友,让我们一起学习与进步!

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值