抱歉,您的瀏覽器無法訪問本站
本頁面需要瀏覽器支持(啟用)JavaScript
了解詳情 >

简介

简单工厂模式是创建形的设计模式,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

例子

首先来个手机的接口(基类)

1
2
3
4
5
6
7
8
9
10
/**
* 创建在 2020/6/15 18:31
*/
public interface Phone {

/**
* 描述手机信息
*/
public void info();
}

然后来几个手机具体类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class XiaoMiPhone implements Phone{
@Override
public void info() {
System.out.println("我是小米手机");
}
}

public class OppoPhone implements Phone {
@Override
public void info() {
System.out.println("我是oppo手机");
}
}

public class HuaWeiPhone implements Phone {
@Override
public void info() {
System.out.println("我是华为手机拉");
}
}

在整个枚举类表示手机类型

1
2
3
4
5
6
7
8
9
public enum PhoneType {
XIAOMI(1),HUAWEI(2),OPPO(3);

private int code;

PhoneType(int code) {
this.code = code;
}
}

所需要的配件都搞定拉,现在工厂启动!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class BasePhoneFactory implements PhoneFactory {
@Override
public Phone produce(PhoneType type) {
switch (type){
case XIAOMI:
return new XiaoMiPhone();
case OPPO:
return new OppoPhone();
case HUAWEI:
return new HuaWeiPhone();
default:
throw new AssertionError("没有该类型的手机");
}
}

public static void main(String[] args) {
PhoneFactory phoneFactory = new BasePhoneFactory();
Phone phone = phoneFactory.produce(PhoneType.XIAOMI);
phone.info();
}
}

输出结果

我是小米手机

总结

  • 优点
  1. 便于对象的扩展,比如要创建苹果手机,只需要继承Phone接口即可,在工厂中对增加的类进行注册,既可以通过PhoneFactory来获取到增加的对象。
  2. 将同一类型的对象进行分装提取,共性都放在接口中,个性放在具体类中。
  • 缺点:
  1. 不利于不同类型对象的创建