Skip to content

Commit eef9d25

Browse files
committed
添加工厂模式
1 parent ccfd885 commit eef9d25

File tree

10 files changed

+164
-1
lines changed

10 files changed

+164
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
* 命令模式
3636
* 状态模式
3737
* 桥接模式
38+
* 工厂模式
3839

3940

4041

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package create.factory;/**
2+
* Created by MirsFang on 2017/5/5.
3+
*/
4+
5+
/***
6+
*作者:MirsFang
7+
*模式:工厂模式
8+
*时间:2017/05/05/上午10:12
9+
*备注 抽象出来的工厂
10+
***/
11+
12+
public abstract class AbsHumanFactory {
13+
public abstract <T extends Human> T createHumen(Class<T> tClass);
14+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package create.factory;/**
2+
* Created by MirsFang on 2017/5/5.
3+
*/
4+
5+
import create.factory.factory.HumanFactory;
6+
import create.factory.human.BlackHuman;
7+
import create.factory.human.WhiteHuman;
8+
import create.factory.human.YellowHuman;
9+
10+
/***
11+
*作者:MirsFang
12+
*模式:工厂模式
13+
*时间:2017/05/05/上午10:28
14+
*备注 执行类
15+
***/
16+
17+
public class FactoryMain {
18+
public static void main(String[] args) {
19+
20+
//初始化一个工厂
21+
AbsHumanFactory humanFactory = new HumanFactory();
22+
23+
//建造一个黄种人
24+
Human yellowHuman = humanFactory.createHumen(YellowHuman.class);
25+
yellowHuman.getColor();
26+
27+
//建造一个黑人
28+
Human blackHuman = humanFactory.createHumen(BlackHuman.class);
29+
blackHuman.getColor();
30+
31+
//建造一个白人
32+
Human whiteHuman = humanFactory.createHumen(WhiteHuman.class);
33+
whiteHuman.getColor();
34+
35+
}
36+
}

src/create/factory/Human.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package create.factory;/**
2+
* Created by MirsFang on 2017/5/5.
3+
*/
4+
5+
/***
6+
*作者:MirsFang
7+
*模式:工厂模式
8+
*时间:2017/05/05/上午10:15
9+
*备注
10+
***/
11+
12+
public interface Human {
13+
void getColor();
14+
}

src/create/factory/factory.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#工厂模式
2+
3+
> 概述: 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的初始化延迟至其子类
4+
5+
工厂模式在工作中也是随处可见的,Uml图上画的是女娲造人的例子,现在也拿过来用
6+
7+
需要的知识点:
8+
* 泛型
9+
* 反射
10+
11+
话不多说 搞起
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package create.factory.factory;/**
2+
* Created by MirsFang on 2017/5/5.
3+
*/
4+
5+
import create.factory.AbsHumanFactory;
6+
import create.factory.Human;
7+
8+
/***
9+
*作者:MirsFang
10+
*模式:工厂模式
11+
*时间:2017/05/05/上午10:17
12+
*备注 具体工厂
13+
***/
14+
15+
public class HumanFactory extends AbsHumanFactory {
16+
@Override
17+
public <T extends Human> T createHumen(Class<T> tClass) {
18+
Human humen=null;
19+
try {
20+
humen= (T) Class.forName(tClass.getName()).newInstance();
21+
} catch (InstantiationException e) {
22+
e.printStackTrace();
23+
} catch (IllegalAccessException e) {
24+
e.printStackTrace();
25+
} catch (ClassNotFoundException e) {
26+
e.printStackTrace();
27+
}
28+
return (T)humen;
29+
}
30+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package create.factory.human;/**
2+
* Created by MirsFang on 2017/5/5.
3+
*/
4+
5+
import create.factory.Human;
6+
7+
/***
8+
*作者:MirsFang
9+
*模式:工厂模式
10+
*时间:2017/05/05/上午10:25
11+
*备注 黑人
12+
***/
13+
14+
public class BlackHuman implements Human {
15+
@Override
16+
public void getColor() {
17+
System.out.println("黑人");
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package create.factory.human;/**
2+
* Created by MirsFang on 2017/5/5.
3+
*/
4+
5+
import create.factory.Human;
6+
7+
/***
8+
*作者:MirsFang
9+
*模式:工厂模式
10+
*时间:2017/05/05/上午10:22
11+
*备注 白人
12+
***/
13+
14+
public class WhiteHuman implements Human {
15+
@Override
16+
public void getColor() {
17+
System.out.println("白色人种");
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package create.factory.human;/**
2+
* Created by MirsFang on 2017/5/5.
3+
*/
4+
5+
import create.factory.Human;
6+
7+
/***
8+
*作者:MirsFang
9+
*模式:工厂模式
10+
*时间:2017/05/05/上午10:22
11+
*备注 黄人
12+
***/
13+
14+
public class YellowHuman implements Human {
15+
@Override
16+
public void getColor() {
17+
System.out.println("黄色人种");
18+
}
19+
}

src/structure/bridge/RefinedAbstraction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*备注 具体抽象化角色
1111
***/
1212

13-
public class RefinedAbstraction extends Abstraction{
13+
public class RefinedAbstraction extends Abstraction {
1414

1515
public RefinedAbstraction(Implementor implementor) {
1616
super(implementor);

0 commit comments

Comments
 (0)