0
点赞
收藏
分享

微信扫一扫

工厂模式---简单工厂、工厂方法代码讲解

雨鸣静声 2022-04-01 阅读 43
java

一、工厂模式概述

工厂模式:将各种对象的创建过程单独提取出来,交给工厂类负责创建管理。谁想要什么产品,直接找工厂要使用的对象。实现创建者和调用者分离。

例如:我们要买一台车,在代码里的实现是new创建,这就相当于我们自己造车了,而工厂模式思想是你要什么车告诉我,我给你车,不要自己造车。

二、工厂模式的三种类型

工厂模式主要有三种类型:简单工厂、工厂方法,抽象方法。

三、简单工厂代码实现

 大家可以先了解下体系然后看代码,然后再回来看体系。

1.Car接口

public interface Car {
//汽车名字
void name();
}

2.奥迪汽车类

public class Audi implements Car{
@Override
public void name() {
System.out.println("奥迪四个圈");
}
}

3.奔驰汽车类

public class Benz implements Car {
@Override
public void name() {
System.out.println("奔驰");
}
}

4.汽车工厂类(即创建者)


public class CarFactory {

public static Car getCar(String car){

//此处选择Switch语句。也可以使用if判断语句。
switch (car){

case "benz":
return new Benz();
case "audi":
return new Audi();

default:
return null;
}
}
}

5.测试类(即调用者)

大家观察以下代码发现我们并不需要去创建对象,需要哪个对象我们直接从工厂里去拿就可以了。

public class MyTest {
public static void main(String[] args) {
Car audi = CarFactory.getCar("audi");
audi.name();
}
}

思考题:如果我们在加一种车Volvo沃尔沃,那么我们需要创建Volvo实现接口,重写方法,这些是必须写的,最重要的还要在车工厂添加条件语句判断创建对象,这样我们就违背了开闭原则,对拓展开放,对修改关闭。

所以我们来了解下面一种方法:工厂方法。这个比较费事。

四、工厂方法代码实现

优化简单工厂代码,就是上面的代码。

1.创建汽车总制造工厂接口,大家这么理解。后面为每个汽车再创建单个汽车工厂。

public interface CarFactory {

Car getCar();
}

2.创建奥迪汽车工厂 实现汽车总制造出接口 创建奥迪对象

public class AudiFactory implements CarFactory {
@Override
public Car getCar() {
return new Audi();
}
}

3.创建奔驰汽车类工厂。与上面一样。

4.现在我们要添加Volvo汽车,创建汽车,实现Car接口,然后创建Volvo工厂,实现总制造厂接口。

5.测试类


public class MyTest {
public static void main(String[] args) {
//比如我们要奥迪汽车,直接去找奥迪工厂即可
Car audi = new AudiFactory().getCar();
audi.name();
}
}

现在我们多次工厂多一个产品,我们不需要去修改源代码,只需要增加工厂类即可。

举报

相关推荐

0 条评论