Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b24ac8e

Browse files
committed
🎉 builder pattern
1 parent 49d941b commit b24ac8e

File tree

12 files changed

+840
-0
lines changed

12 files changed

+840
-0
lines changed

‎design-patterns/src/main/java/pers/huangyuhui/builder_pattern/README.md

Lines changed: 466 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package pers.huangyuhui.builder_pattern.builder_pattern_1;
2+
3+
/**
4+
* @project: design-patterns
5+
* @description: 游戏角色类, 充当复杂产品对象
6+
* @author: 黄宇辉
7+
* @date: 9/19/2019-1:30 PM
8+
* @version: 1.0
9+
* @website: https://yubuntu0109.github.io/
10+
*/
11+
public class Actor {
12+
private String type; //角色类型
13+
private String sex; //性别
14+
private String face; //脸型
15+
private String costume; //服装
16+
17+
public String getType() {
18+
return type;
19+
}
20+
21+
public void setType(String type) {
22+
this.type = type;
23+
}
24+
25+
public String getSex() {
26+
return sex;
27+
}
28+
29+
public void setSex(String sex) {
30+
this.sex = sex;
31+
}
32+
33+
public String getFace() {
34+
return face;
35+
}
36+
37+
public void setFace(String face) {
38+
this.face = face;
39+
}
40+
41+
public String getCostume() {
42+
return costume;
43+
}
44+
45+
public void setCostume(String costume) {
46+
this.costume = costume;
47+
}
48+
49+
@Override
50+
public String toString() {
51+
return "Actor{" +
52+
"type='" + type + '\'' +
53+
", sex='" + sex + '\'' +
54+
", face='" + face + '\'' +
55+
", costume='" + costume + '\'' +
56+
'}';
57+
}
58+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package pers.huangyuhui.builder_pattern.builder_pattern_1;
2+
3+
/**
4+
* @project: design-patterns
5+
* @description: 游戏角色建造者, 充当抽象建造者
6+
* @author: 黄宇辉
7+
* @date: 9/19/2019-1:39 PM
8+
* @version: 1.0
9+
* @website: https://yubuntu0109.github.io/
10+
*/
11+
public abstract class ActorBuilder {
12+
protected Actor actor = new Actor();
13+
14+
public abstract void buildType();
15+
16+
public abstract void buildSex();
17+
18+
public abstract void buildFace();
19+
20+
public abstract void buildCostume();
21+
22+
//工厂方法,返回一个完整的游戏角色对象
23+
public Actor createActor() {
24+
return actor;
25+
}
26+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package pers.huangyuhui.builder_pattern.builder_pattern_1;
2+
3+
/**
4+
* @project: design-patterns
5+
* @description: 角色控制器, 充当指挥者
6+
* @author: 黄宇辉
7+
* @date: 9/19/2019-1:46 PM
8+
* @version: 1.0
9+
* @website: https://yubuntu0109.github.io/
10+
*/
11+
public class ActorController {
12+
13+
//逐步构建复杂产品对象
14+
public Actor construct(ActorBuilder actorBuilder) {
15+
Actor actor;
16+
actorBuilder.buildType();
17+
actorBuilder.buildSex();
18+
actorBuilder.buildFace();
19+
actorBuilder.buildCostume();
20+
actor = actorBuilder.createActor();
21+
return actor;
22+
}
23+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package pers.huangyuhui.builder_pattern.builder_pattern_1;
2+
3+
/**
4+
* @project: design-patterns
5+
* @description: 天使角色建造者, 充当具体建造类
6+
* @author: 黄宇辉
7+
* @date: 9/19/2019-1:44 PM
8+
* @version: 1.0
9+
* @website: https://yubuntu0109.github.io/
10+
*/
11+
public class AngelBuilder extends ActorBuilder {
12+
13+
@Override
14+
public void buildType() {
15+
actor.setType("天使");
16+
}
17+
18+
@Override
19+
public void buildSex() {
20+
actor.setSex("女");
21+
}
22+
23+
@Override
24+
public void buildFace() {
25+
actor.setFace("漂亮");
26+
}
27+
28+
@Override
29+
public void buildCostume() {
30+
actor.setCostume("裙子");
31+
}
32+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package pers.huangyuhui.builder_pattern.builder_pattern_1;
2+
3+
/**
4+
* @project: design-patterns
5+
* @description: 客户端测试类
6+
* @author: 黄宇辉
7+
* @date: 9/19/2019-1:49 PM
8+
* @version: 1.0
9+
* @website: https://yubuntu0109.github.io/
10+
*/
11+
public class Client {
12+
13+
public static void main(String[] args) {
14+
ActorController actorController = new ActorController();
15+
16+
ActorBuilder zero = new HeroBuilder();
17+
Actor actor_zero = actorController.construct(zero);
18+
System.out.println(actor_zero);
19+
20+
System.out.println("------------------------------");
21+
22+
ActorBuilder angel = new AngelBuilder();
23+
Actor actor_angel = actorController.construct(angel);
24+
System.out.println(actor_angel);
25+
}
26+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package pers.huangyuhui.builder_pattern.builder_pattern_1;
2+
3+
/**
4+
* @project: design-patterns
5+
* @description: 英雄角色建造者, 充当具体建造者
6+
* @author: 黄宇辉
7+
* @date: 9/19/2019-1:42 PM
8+
* @version: 1.0
9+
* @website: https://yubuntu0109.github.io/
10+
*/
11+
public class HeroBuilder extends ActorBuilder {
12+
@Override
13+
public void buildType() {
14+
actor.setType("英雄");
15+
}
16+
17+
@Override
18+
public void buildSex() {
19+
actor.setSex("男");
20+
}
21+
22+
@Override
23+
public void buildFace() {
24+
actor.setFace("英俊");
25+
}
26+
27+
@Override
28+
public void buildCostume() {
29+
actor.setCostume("盔甲");
30+
}
31+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package pers.huangyuhui.builder_pattern.builder_pattern_2;
2+
3+
/**
4+
* @project: design-patterns
5+
* @description: 游戏角色类, 充当复杂产品对象
6+
* @author: 黄宇辉
7+
* @date: 9/19/2019-1:30 PM
8+
* @version: 1.0
9+
* @website: https://yubuntu0109.github.io/
10+
*/
11+
public class Actor {
12+
private String type; //角色类型
13+
private String sex; //性别
14+
private String face; //脸型
15+
private String costume; //服装
16+
17+
public String getType() {
18+
return type;
19+
}
20+
21+
public void setType(String type) {
22+
this.type = type;
23+
}
24+
25+
public String getSex() {
26+
return sex;
27+
}
28+
29+
public void setSex(String sex) {
30+
this.sex = sex;
31+
}
32+
33+
public String getFace() {
34+
return face;
35+
}
36+
37+
public void setFace(String face) {
38+
this.face = face;
39+
}
40+
41+
public String getCostume() {
42+
return costume;
43+
}
44+
45+
public void setCostume(String costume) {
46+
this.costume = costume;
47+
}
48+
49+
@Override
50+
public String toString() {
51+
return "Actor{" +
52+
"type='" + type + '\'' +
53+
", sex='" + sex + '\'' +
54+
", face='" + face + '\'' +
55+
", costume='" + costume + '\'' +
56+
'}';
57+
}
58+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package pers.huangyuhui.builder_pattern.builder_pattern_2;
2+
3+
/**
4+
* @project: design-patterns
5+
* @description: 游戏角色建造者, 充当抽象建造者(省略Director并简化construct方法)
6+
* @author: 黄宇辉
7+
* @date: 9/19/2019-1:39 PM
8+
* @version: 1.0
9+
* @website: https://yubuntu0109.github.io/
10+
*/
11+
public abstract class ActorBuilder {
12+
protected Actor actor = new Actor();
13+
14+
public abstract void buildType();
15+
16+
public abstract void buildSex();
17+
18+
public abstract void buildFace();
19+
20+
public abstract void buildCostume();
21+
22+
//工厂方法,返回一个完整的游戏角色对象
23+
//public Actor createActor() {
24+
// return actor;
25+
//}
26+
27+
//逐步构建复杂产品对象
28+
public Actor construct() {
29+
this.buildType();
30+
this.buildSex();
31+
this.buildFace();
32+
this.buildCostume();
33+
return actor;
34+
}
35+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package pers.huangyuhui.builder_pattern.builder_pattern_2;
2+
3+
/**
4+
* @project: design-patterns
5+
* @description: 天使角色建造者, 充当具体建造类
6+
* @author: 黄宇辉
7+
* @date: 9/19/2019-1:44 PM
8+
* @version: 1.0
9+
* @website: https://yubuntu0109.github.io/
10+
*/
11+
public class AngelBuilder extends ActorBuilder {
12+
13+
@Override
14+
public void buildType() {
15+
actor.setType("天使");
16+
}
17+
18+
@Override
19+
public void buildSex() {
20+
actor.setSex("女");
21+
}
22+
23+
@Override
24+
public void buildFace() {
25+
actor.setFace("漂亮");
26+
}
27+
28+
@Override
29+
public void buildCostume() {
30+
actor.setCostume("裙子");
31+
}
32+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /