File tree Expand file tree Collapse file tree 7 files changed +140
-1
lines changed
src/designpattern/builder Expand file tree Collapse file tree 7 files changed +140
-1
lines changed Original file line number Diff line number Diff line change @@ -8,9 +8,14 @@ Java代码积累
88## using containers
99- [ 利用迭代器实现反转] ( ./src/containers/Reverse.java )
1010## design pattern
11- - [ 简单工厂模式] ( ./src/designpattern/factory/Calculator.java )
11+ - [ 简单工厂模式] ( ./src/designpattern/factory/simple/ Calculator.java )
1212- [ 策略模式] ( ./src/designpattern/strategy/StrategyClient.java )
1313- [ 装饰模式] ( ./src/designpattern/decorator/DecoratorClient.java )
14+ - [ 代理模式] ( ./src/designpattern/delegation/ProxyClient.java )
15+ - [ 工厂方法模式] ( ./src/designpattern/factory/method/FactoryClient.java )
16+ - [ 模板方法模式] ( ./src/designpattern/template/TemplateClient.java )
17+ - [ 外观模式] ( ./src/designpattern/facade/FacadeClient.java )
18+ - [ 建造者模式] ( ./src/designpattern/builder/BuilderClient.java )
1419
1520## concurrency
1621- [ 演示线程的生命周期] ( ./src/concurrency/ThreadLifeCycle.java )
Original file line number Diff line number Diff line change 1+ package designpattern .builder ;
2+
3+ public abstract class Builder {
4+ public abstract void buildPartA ();
5+
6+ public abstract void buildPartB ();
7+
8+ public abstract Product getBuildResult ();
9+ }
Original file line number Diff line number Diff line change 1+ package designpattern .builder ;
2+
3+ /**
4+ * 建造客户端
5+ *
6+ * @author liu yuning
7+ *
8+ */
9+ public class BuilderClient {
10+
11+ public static void main (String [] args ) {
12+ Director director = new Director ();
13+ Builder builder1 = new ConcreteBuilder1 ();
14+ Builder builder2 = new ConcreteBuilder2 ();
15+
16+ director .construct (builder1 );
17+ Product product1 = builder1 .getBuildResult ();
18+ product1 .show ();
19+
20+ director .construct (builder2 );
21+ Product product2 = builder2 .getBuildResult ();
22+ product2 .show ();
23+
24+ }
25+
26+ }
Original file line number Diff line number Diff line change 1+ package designpattern .builder ;
2+
3+ /**
4+ * 具体建造者类
5+ *
6+ * @author liu yuning
7+ *
8+ */
9+ public class ConcreteBuilder1 extends Builder {
10+
11+ private Product product = new Product ();
12+
13+ @ Override
14+ public void buildPartA () {
15+ product .add ("部件A" );
16+ }
17+
18+ @ Override
19+ public void buildPartB () {
20+ product .add ("部件B" );
21+ }
22+
23+ @ Override
24+ public Product getBuildResult () {
25+ return product ;
26+ }
27+
28+ }
Original file line number Diff line number Diff line change 1+ package designpattern .builder ;
2+
3+ /**
4+ * 具体建造者类,建造的对象时Product,通过build使Product完善
5+ *
6+ * @author liu yuning
7+ *
8+ */
9+ public class ConcreteBuilder2 extends Builder {
10+
11+ private Product product = new Product ();
12+
13+ @ Override
14+ public void buildPartA () {
15+ product .add ("部件X" );
16+ }
17+
18+ @ Override
19+ public void buildPartB () {
20+ product .add ("部件Y" );
21+ }
22+
23+ @ Override
24+ public Product getBuildResult () {
25+ return product ;
26+ }
27+
28+ }
Original file line number Diff line number Diff line change 1+ package designpattern .builder ;
2+
3+ /**
4+ * 指挥者类,用来指挥建造过程
5+ *
6+ * @author liu yuning
7+ *
8+ */
9+ public class Director {
10+
11+ public void construct (Builder builder ) {
12+ builder .buildPartA ();
13+ builder .buildPartB ();
14+ }
15+ }
Original file line number Diff line number Diff line change 1+ package designpattern .builder ;
2+
3+ import java .util .ArrayList ;
4+ import java .util .List ;
5+
6+ /**
7+ * 产品类,由多个部件组成
8+ *
9+ * @author liu yuning
10+ *
11+ */
12+ public class Product {
13+ List <String > parts = new ArrayList <String >();
14+
15+ // 添加产品部件
16+ public void add (String part ) {
17+ parts .add (part );
18+ }
19+
20+ // 列举所有的产品部件
21+ public void show () {
22+ System .out .println ("---产品 创建---" );
23+
24+ for (String part : parts ) {
25+ System .out .println (part );
26+ }
27+ }
28+ }
You can’t perform that action at this time.
0 commit comments