工厂模式之简单工厂

概念:工厂模式提供了一种创建对象的最佳方式。我们不必关心对象的创建细节,只需要根据不同情况获取不同产品即可。

难点:如何写好我们的工厂?

核心思想:又一个工厂根据不同参数来创建不同类型的对象,客户端只需要告诉工厂我想要什么,就可以获取对应的对象。

结构模式:

  1. 工厂类:负责创建具体产品对象。

  2. 产品抽象类:定义产品的共同接口或抽象类。

  3. 具体产品类:实现了产品抽象类的具体类。

优点:

  • 客户端不需要知道对象如何创建,降低耦合。

  • 管理对象创建集中统一,便于维护。

缺点:

  • 扩展新产品时需要修改工厂类代码,不符合开闭原则。

  • 如果产品太多,工厂类可能变得庞大难以维护。

eg:比如你要买饮料,你打电话告诉店员你要“可乐”或“雪碧”,店员负责给你准备好。你不需要知道饮料是怎么做出来的。

// 抽象产品
public interface Drink {
    void drink();
}

// 具体产品
public class Cola implements Drink {
    public void drink() {
        System.out.println("喝可乐");
    }
}

public class Sprite implements Drink {
    public void drink() {
        System.out.println("喝雪碧");
    }
}

// 工厂类
public class DrinkFactory {
    public static Drink getDrink(String type) {
        if ("cola".equalsIgnoreCase(type)) {
            return new Cola();
        } else if ("sprite".equalsIgnoreCase(type)) {
            return new Sprite();
        } else {
            throw new IllegalArgumentException("没有这种饮料");
        }
    }
}

// 客户端
public class Test {
    public static void main(String[] args) {
        Drink drink = DrinkFactory.getDrink("cola");
        drink.drink();  // 输出:喝可乐
    }
}

总结一句话:

简单工厂模式就是用一个专门的工厂类根据参数来创建对象,降低了客户端和产品类的耦合度,但不利于扩展新产品。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bigdataing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值