工厂模式(Factory Pattern)是一种常用的创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。(常用于,多种方式支付、多种登录、多渠道等)
工厂模式简单分为:
1. 简单工厂模式(Simple Factory Pattern)
优点:
- 工厂类包含必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品。
缺点:
- 当产品类不断增多时候,工厂逻辑会越来越复杂。
- 违反了开闭原则,增加新产品时,需要修改工厂类的代码。
2. 工厂方法模式(Factory Method Pattern)
工厂方法模式定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类中进行。
优点:
- 用户只需要知道具体工厂类的名称就可得到所要的产品对象,而无需知道这个对象是如何被具体实现的。
- 系统可以在不修改具体工厂类的情况下引进新的产品。
缺点:
- 每增加一个产品,就需要增加一个具体工厂类,增加了系统的复杂度。
3. 抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
优点:
- 当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。
- 增加新的产品族很方便,无需修改已有系统,符合开闭原则。
缺点:
- 产品族扩展困难,要增加新的产品族必须修改接口及其下所有子类。
这样讲大家可能不太明白,下面我使用一个简单的工厂模式,你就明白了,一目了然:
eg:在我们支付的时候肯定不止一种支付方式,那么我们为了减少对象的创建,简化代码,解耦,我们就可以使用工厂模式去实现相对业务:
1.创建一个接口,用于给方法实现
2.创建需要实现接口的方法,可以根据需求定义
3.然后编写一个工具类,编写一个静态方法,用于消费者使用
4.消费者,可以根据自己的需求,使用工具类,这里我是全部使用了
5.控制台打印,可以看见,对应的值已经打印完成,这就是工厂模式的简单使用,可以结合实际情况去变化使用,无硬性编码要求