Ok Boom

”勿忘初心,方得始终“

工厂方法模式

工厂方法模式

定义

工厂方法模式又称为工厂模式,抽象出对象创建方法,将实际创建对象的方法下沉到对应的工厂。

问题

小明船厂的业务越来越多,当初租的一块场地已经拥挤不堪,所有的业务都在岛上的划分的一块区域进行,现在需要进行业务重组,再租几块场地来进行开发,那么怎么划分比较合理呢?

怎么解

我们可以分为总部,小型船厂、中型船厂、大型船厂。总部接单下达生产指标分别到不同的船厂,不同的船厂造不同尺寸的船

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
public interface ShipFactory {
public Ship createShip();
}

public class Ship {
public String move() {
return "";
}
}

/**
* 小型船
*/
public class SmallShip extends Ship {
public String move() {
return "2海里/小时";
}
}

/**
* 中型船
*/
public class MiddleShip extends Ship {
public String move() {
return "10海里/小时";
}
}

/**
* 大型船
*/
public class BigShip extends Ship {
public String move() {
return "20海里/小时";
}
}

/**
* 小型船厂
*/
public class SmallFactory implements ShipFactory() {
public Ship createShip() {
return new SmallShip();
}
}

/**
* 中型船厂
*/
public class MiddleFactory implements ShipFactory() {
public Ship createShip() {
return new MiddleShip();
}
}

/**
* 大型船厂
*/
public class BigFactory implements ShipFactory() {
public Ship createShip() {
return new BigShip();
}
}

public static void main(String [] args) {
ShipFactory smallFactory = new SmallFactory();
Ship ship = smallFactory.createShip();
ship.move();

ShipFactory middleFactory = new MiddleFactory();
ship = middleFactory.createShip();
ship.move();

ShipFactory bigFactory = new BigFactory();
ship = bigFactory.createShip();
ship.move();
}

在上述代码中,我们通过不同的工厂来创建出同一类的产品(小船厂也造不出大型船),用户不需要知道我是从哪个工厂怎么造出来的,以后如果业务线再扩大时,我们可以新建另外一个工厂来解决