Skip to content

Commit 2cc158d

Browse files
committed
add 不同的director
1 parent b4448da commit 2cc158d

File tree

5 files changed

+48
-11
lines changed

5 files changed

+48
-11
lines changed
Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package base.design.pattern.builder;
22

3+
import lombok.extern.slf4j.Slf4j;
4+
35
/**
46
* 客户端构建游戏角色
57
*
68
* @author zhangluping on 2018/12/25.
79
*/
10+
@Slf4j
811
public class CharacterClient {
912

1013
public static Character builderWithDirector() {
@@ -16,16 +19,26 @@ public static Character builderWithDirector() {
1619
return characterDirector.construct(characterBuilder);
1720
}
1821

22+
public static Character builderWithNoEnhance() {
23+
// 针对抽象建造者编程
24+
AbstractCharacterBuilder characterBuilder = new WarriorBuilder();
25+
// 指挥者
26+
CharacterNoEnhanceDirector characterDirector = new CharacterNoEnhanceDirector();
27+
//通过指挥者创建完整的建造者对象
28+
return characterDirector.construct(characterBuilder);
29+
}
30+
1931
private static Character builderWithInnerBuilder() {
2032
return Character.builder().clazz("战士").race("兽人").sex("男").face("野兽").skinColor("黑").skill("冲锋").build();
2133
}
2234

2335

2436
public static void main(String[] args) {
25-
Character actor = builderWithDirector();
26-
System.out.println(actor);
27-
28-
actor = builderWithInnerBuilder();
29-
System.out.println(actor);
37+
Character character = builderWithDirector();
38+
log.info("CharacterDirector ={}", character);
39+
character = builderWithNoEnhance();
40+
log.info("CharacterNoEnhanceDirector ={}", character);
41+
character = builderWithInnerBuilder();
42+
log.info("InnerBuilder ={}", character);
3043
}
3144
}

java-knowledge-base/src/main/java/base/design/pattern/builder/CharacterDirector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ public class CharacterDirector {
1111
public Character construct(AbstractCharacterBuilder characterBuilder) {
1212
Character character;
1313
characterBuilder.buildClazz();
14-
characterBuilder.buildRace();
1514
characterBuilder.buildSex();
1615
characterBuilder.buildFace();
1716
characterBuilder.buildSkinColor();
17+
characterBuilder.buildRace();
1818
characterBuilder.buildSkills();
1919
character = characterBuilder.createCharacter();
2020
return character;
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package base.design.pattern.builder;
2+
3+
/**
4+
* Director -- 指挥者 -- 游戏角色创建
5+
* @author zhangluping on 2018/12/25.
6+
*/
7+
public class CharacterNoEnhanceDirector {
8+
/**
9+
* 逐步构建复杂产品对象
10+
*/
11+
public Character construct(AbstractCharacterBuilder characterBuilder) {
12+
Character character;
13+
characterBuilder.buildClazz();
14+
characterBuilder.buildSex();
15+
characterBuilder.buildFace();
16+
characterBuilder.buildSkinColor();
17+
characterBuilder.buildSkills();
18+
characterBuilder.buildRace();
19+
character = characterBuilder.createCharacter();
20+
return character;
21+
}
22+
}

java-knowledge-base/src/main/java/base/design/pattern/prototype/PrototypeClient.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ public static void main(String[] args) {
1414
Character actor = CharacterClient.builderWithDirector();
1515
log.info("Prototype actor : {}", actor);
1616
Character copyActor = actor.clone();
17-
copyActor.setHairstyle("黑色短发");
17+
copyActor.setFace("黑色短发");
1818
log.info("Prototype copyActor : {}", copyActor);
19-
log.info("Prototype actor.costume == copyActor.costume : {}", actor.getCostume() == copyActor.getCostume());
19+
log.info("Prototype actor.race == copyActor.race : {}", actor.getRace() == copyActor.getRace());
2020

2121
try {
2222
Character deepCopyActor = copyActor.deepClone();
23-
deepCopyActor.setHairstyle("灰色短发");
23+
deepCopyActor.setFace("灰色短发");
2424
log.info("Prototype deepCopyActor : {}", deepCopyActor);
25-
log.info("Prototype deepCopyActor.costume == copyActor.costume : {}", deepCopyActor.getCostume() == copyActor.getCostume());
25+
log.info("Prototype deepCopyActor.race == copyActor.race : {}", deepCopyActor.getRace() == copyActor.getRace());
2626
} catch (Exception e) {
2727
log.info("Prototype deepCopyActor error : ", e);
2828
}

pom.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
<modules>
1212
<module>java-knowledge-base</module>
1313
</modules>
14-
14+
<properties>
15+
<jdk.version>1.8</jdk.version>
16+
</properties>
1517

1618
<build>
1719
<plugins>

0 commit comments

Comments
 (0)