简单工厂设计模式,也就是静待工厂
场景,最近小米6很火啊,我也是小米的粉丝,就拿小米6来说,有黑色,白色,蓝色,三种非常亮的颜色。
先来代码,然后有疑惑,最后解释。
简单工厂设计模式有一个类是抽象类,是黑色,白色,蓝色手机的父类。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/**
* 小米手机抽象类
*
* @author sdc
*
*/
public
abstract
class
XiaoMiProduction {
/**
* 生产小米6的方法
*/
public
abstract
void
createXiaoMi6();
}
|
蓝色手机生产类。
1
2
3
4
5
6
7
8
9
|
public
class
XiaoMi6Blue
extends
XiaoMiProduction{
@Override
public
void
createXiaoMi6() {
// TODO Auto-generated method stub
System.out.println(
"生产亮蓝版本小米6"
);
}
}
|
白色手机生产类。
1
2
3
4
5
6
7
8
9
10
11
12
|
package
com.test4;
public
class
XiaoMi6White
extends
XiaoMiProduction{
@Override
public
void
createXiaoMi6() {
// TODO Auto-generated method stub
System.out.println(
"生产亮白版本小米6"
);
}
}
|
黑色手机生产类:
1
2
3
4
5
6
7
8
9
|
public
class
XiaoMi6Black
extends
XiaoMiProduction{
@Override
public
void
createXiaoMi6() {
// TODO Auto-generated method stub
System.out.println(
"生产亮黑版本小米6"
);
}
}
|
工厂类产生,生产小米6的工厂类。
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
|
/**
* 生产小米6的工厂
*
* @author sdc
*
*/
public
class
XiaoMi6Factory {
// 蓝色
private
static
final
String blule =
"blue"
;
// 黑色
private
static
final
String black =
"black"
;
// 白色
private
static
final
String white =
"while"
;
/**
* 静态工厂方法
* @param colour
* @return
*/
public
static
XiaoMiProduction createXiaoMi6(String colour) {
XiaoMiProduction xmP =
null
;
switch
(colour) {
case
black:
xmP =
new
XiaoMi6Black();
break
;
case
blule:
xmP =
new
XiaoMi6Blue();
break
;
case
white:
xmP =
new
XiaoMi6White();
break
;
}
return
xmP;
}
}
|
说明:
生产哪一种颜色的手机,有你给传入到工厂类里的参数决定的,这个静态方法会返回给你一个具体的生产类。用这个生产类来去调用具体的业务逻辑。
角色划分:
抽象产品角色:就是上文提到的XiaoMiProduction这个抽象类,是那父类,可以是接口也可以是抽象类。
具体产品角色:就是生产三种颜色的手机类,具体的业务逻辑。
工厂角色:就是XiaoMi6Factory这个类,作用就是生产具体的产品的类,里面提供一个静态方法,提供给外部调用。
本文转自 豆芽菜橙 51CTO博客,原文链接:http://blog.51cto.com/shangdc/1918849