Java设计模式之 工厂模式(简单工厂模式)

前一阵子学习了Java 中据说是最简单的设计模式的 单例模式,想一起讨论学习的小伙伴请点击这里:
Java 设计模式之单例模式

那么今天就把学习的工厂模式记录下来

  • 工厂模式:
    实现了创建者和调用者的分离
    详细分类:简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式完全遵守了面向对象设计的基本原则 即:

  • 开闭原则:一个软件的实体应该对拓展开放,对修改关闭。
  • 依赖倒转原则:要针对接口编程,不要针对实现编程。
  • 迪米特法则:只与你直接的朋友通信,不与陌生人通信。

首先学习简单工厂模式

先举个小例子,假如我们生产两种汽车,分别是奥迪和比亚迪,常规情况下,我们直接new 一个奥迪或者比亚迪

public class AudiCar implements Car{
    @Override
    public void create() {
        System.out.println("生产奥迪汽车");
    }
}

public interface Car {
    void create();
}

写个测试类

public class FactoryClient1 {
    public static void main(String[] args) {
        AudiCar audiCar = new AudiCar();
        BydCar bydCar = new BydCar();

        audiCar.create();
        bydCar.create();
    }
}

打印结果:
生产奥迪汽车
生产比亚迪汽车

但是这样我们每次都要修改我们的客户端,用户是不用知道它是怎么具体生产的,所以我们将它们装进一个工厂里,

public class CarFactorySimple {
    public static Car createCar(String type) {
        if ("audi".equals(type)) {
            return new AudiCar();
        } else if ("byd".equals(type)) {
            return new BydCar();
        }

        return null;
    }
}

还有一种写法

public class CarFactorySimple {
    public static Car createAudiCar() {
        return new AudiCar();
    }

    public static Car createBydCar() {
        return new BydCar();
    }
}

由以上可见,简单工厂对于扩展产品方面就显得不是很好了,我们一直要对其进行修改,所以:

  • 简单工厂模式一般也称作静态工厂模式,就是工厂方法一般采取静态方法的模式,通过接受不同参数来生产不同的对象。
  • 对于增加新产品显得无能为力,不修改代码不能完成扩展。

违反了我们的开闭原则。如何避免这种问题呢,这就是下面学习的工厂方法模式了。
关于工厂方法模式,请跳转Java 设计模式之工厂模式(工厂方法模式)

关于简单工厂模式,欢迎朋友们一起学习讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值