File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2+ <module type =" JAVA_MODULE" version =" 4" >
3+ <component name =" NewModuleRootManager" inherit-compiler-output =" true" >
4+ <exclude-output />
5+ <content url =" file://$MODULE_DIR$" >
6+ <sourceFolder url =" file://$MODULE_DIR$/src" isTestSource =" false" />
7+ </content >
8+ <orderEntry type =" inheritedJdk" />
9+ <orderEntry type =" sourceFolder" forTests =" false" />
10+ </component >
11+ </module >
Original file line number Diff line number Diff line change 1+ import cn .yang .bean .Car ;
2+ import cn .yang .manage .Builder ;
3+ import cn .yang .manage .Builder1 ;
4+ import cn .yang .manage .Builder2 ;
5+ import cn .yang .manage .Direcotr ;
6+
7+ /**
8+ * @author Cool-Coding 2017/7/10
9+ */
10+ public class Main {
11+ public static void main (String args []){
12+ Direcotr direcotr =new Direcotr ();
13+
14+ //流程一
15+ Builder builder1 =new Builder1 ();
16+ direcotr .setBuilder (builder1 );
17+ direcotr .build ();
18+ Car car1 =builder1 .getCar ();
19+ System .out .println (car1 );
20+
21+ //流程二
22+ Builder builder2 =new Builder2 ();
23+ direcotr .setBuilder (builder2 );
24+ direcotr .build ();
25+ Car car2 =builder2 .getCar ();
26+ System .out .println (car2 );
27+
28+
29+ }
30+ }
Original file line number Diff line number Diff line change 1+ package cn .yang .bean ;
2+
3+ /**
4+ * @author Cool-Coding 2017/7/10
5+ */
6+ public class Car {
7+ private String wheels ;//车轮
8+ private String steeringWheel ;//方向盘
9+ private String carBody ;//车身
10+
11+ public String getWheels () {
12+ return wheels ;
13+ }
14+
15+ public void setWheels (String wheels ) {
16+ this .wheels = wheels ;
17+ }
18+
19+ public String getSteeringWheel () {
20+ return steeringWheel ;
21+ }
22+
23+ public void setSteeringWheel (String steeringWheel ) {
24+ this .steeringWheel = steeringWheel ;
25+ }
26+
27+ public String getCarBody () {
28+ return carBody ;
29+ }
30+
31+ public void setCarBody (String carBody ) {
32+ this .carBody = carBody ;
33+ }
34+
35+ @ Override
36+ public String toString () {
37+ return "车轮:" +this .wheels +";方向盘:" +this .steeringWheel +";车身:" +this .carBody ;
38+ }
39+ }
Original file line number Diff line number Diff line change 1+ package cn .yang .manage ;
2+
3+ import cn .yang .bean .Car ;
4+
5+ /**
6+ * @author Cool-Coding 2017/7/10
7+ */
8+ public abstract class Builder {
9+ protected Car car ;
10+
11+ public Builder (){
12+ car =new Car ();
13+ }
14+
15+ public abstract void buildWheels ();
16+ public abstract void buildSteeringWheels ();
17+ public abstract void buildCarBody ();
18+
19+ //生产完成后,车出厂
20+ public Car getCar (){
21+ return car ;
22+ }
23+ }
Original file line number Diff line number Diff line change 1+ package cn .yang .manage ;
2+
3+ import cn .yang .bean .Car ;
4+
5+ /**
6+ * @author Cool-Coding 2017/7/10
7+ */
8+ public class Builder1 extends Builder {
9+ @ Override
10+ public void buildWheels () {
11+ car .setWheels ("2m" );
12+ }
13+
14+ @ Override
15+ public void buildSteeringWheels () {
16+ car .setSteeringWheel ("1.5m" );
17+ }
18+
19+ @ Override
20+ public void buildCarBody () {
21+ car .setCarBody ("长度5m,宽度1.5m" );
22+ }
23+ }
Original file line number Diff line number Diff line change 1+ package cn .yang .manage ;
2+
3+ import cn .yang .bean .Car ;
4+
5+ /**
6+ * @author Cool-Coding 2017/7/10
7+ */
8+ public class Builder2 extends Builder {
9+ @ Override
10+ public void buildWheels () {
11+ car .setWheels ("10m" );
12+ }
13+
14+ @ Override
15+ public void buildSteeringWheels () {
16+ car .setSteeringWheel ("3m" );
17+ }
18+
19+ @ Override
20+ public void buildCarBody () {
21+ car .setCarBody ("长度6m,宽度3m" );
22+ }
23+ }
Original file line number Diff line number Diff line change 1+ package cn .yang .manage ;
2+
3+ /**
4+ * @author Cool-Coding 2017/7/10
5+ */
6+ public class Direcotr {
7+ Builder builder ;
8+
9+ public Builder getBuilder () {
10+ return builder ;
11+ }
12+
13+ public void setBuilder (Builder builder ) {
14+ this .builder = builder ;
15+ }
16+
17+ /**
18+ * 按照流程生产汽车(严格来说,生产可以同时进行,也就是说builder方法可以同时进行,组装需要流程)
19+ * 此处可以理解为按照一定流程组装汽车
20+ */
21+ public void build (){
22+ builder .buildCarBody ();
23+ builder .buildWheels ();
24+ builder .buildSteeringWheels ();
25+ }
26+ }
You can’t perform that action at this time.
0 commit comments