Skip to content

Commit 0eba95b

Browse files
committed
builder pattern
1 parent f88b788 commit 0eba95b

File tree

6 files changed

+62
-47
lines changed

6 files changed

+62
-47
lines changed
Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
package com.anxpp.designpattern.builder;
2+
23
//具体生成器
3-
public class DateBuilder1 implements IDateBuilder{
4-
private MyDate myDate;
5-
public DateBuilder1(MyDate myDate){
6-
this.myDate = myDate;
7-
}
8-
@Override
9-
public IDateBuilder buildDate(int y, int m, int d) {
10-
myDate.date = y+"-"+m+"-"+d;
11-
return this;
12-
}
13-
@Override
14-
public String date() {
15-
return myDate.date;
16-
}
4+
public class DateBuilder1 implements IDateBuilder {
5+
private MyDate myDate;
6+
7+
public DateBuilder1(MyDate myDate) {
8+
this.myDate = myDate;
9+
}
10+
11+
@Override
12+
public IDateBuilder buildDate(int y, int m, int d) {
13+
myDate.date = y + "-" + m + "-" + d;
14+
return this;
15+
}
16+
17+
@Override
18+
public String date() {
19+
return myDate.date;
20+
}
1721
}
Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
package com.anxpp.designpattern.builder;
2+
23
//具体生成器
3-
public class DateBuilder2 implements IDateBuilder{
4-
private MyDate myDate;
5-
public DateBuilder2(MyDate myDate){
6-
this.myDate = myDate;
7-
}
8-
@Override
9-
public IDateBuilder buildDate(int y, int m, int d) {
10-
myDate.date = y+" "+m+" "+d;
11-
return this;
12-
}
13-
@Override
14-
public String date() {
15-
return myDate.date;
16-
}
4+
public class DateBuilder2 implements IDateBuilder {
5+
private MyDate myDate;
6+
7+
public DateBuilder2(MyDate myDate) {
8+
this.myDate = myDate;
9+
}
10+
11+
@Override
12+
public IDateBuilder buildDate(int y, int m, int d) {
13+
myDate.date = y + " " + m + " " + d;
14+
return this;
15+
}
16+
17+
@Override
18+
public String date() {
19+
return myDate.date;
20+
}
1721
}
Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.anxpp.designpattern.builder;
2+
23
//指挥者
34
public class Derector {
4-
private IDateBuilder builder;
5-
public Derector(IDateBuilder builder){
6-
this.builder = builder;
7-
}
8-
public String getDate(int y,int m,int d){
9-
builder.buildDate(y, m, d);
10-
return builder.date();
11-
}
5+
private IDateBuilder builder;
6+
7+
public Derector(IDateBuilder builder) {
8+
this.builder = builder;
9+
}
10+
11+
public String getDate(int y, int m, int d) {
12+
builder.buildDate(y, m, d);
13+
return builder.date();
14+
}
1215
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.anxpp.designpattern.builder;
2+
23
//抽象生成器
34
public interface IDateBuilder {
4-
IDateBuilder buildDate(int y,int m,int d);
5-
String date();
5+
IDateBuilder buildDate(int y, int m, int d);
6+
7+
String date();
68
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.anxpp.designpattern.builder;
2+
23
//产品
34
public class MyDate {
4-
String date;
5+
String date;
56
}
Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package com.anxpp.designpattern.builder;
2+
23
public class TestUse {
3-
public static void main(String args[]){
4-
MyDate date = new MyDate();
5-
IDateBuilder builder;
6-
builder = new DateBuilder1(date).buildDate(2066, 3, 5);
7-
System.out.println(builder.date());
8-
builder = new DateBuilder2(date).buildDate(2066, 3, 5);
9-
System.out.println(builder.date());
10-
}
4+
public static void main(String args[]) {
5+
MyDate date = new MyDate();
6+
IDateBuilder builder;
7+
builder = new DateBuilder1(date).buildDate(2066, 3, 5);
8+
System.out.println(builder.date());
9+
builder = new DateBuilder2(date).buildDate(2066, 3, 5);
10+
System.out.println(builder.date());
11+
}
1112
}

0 commit comments

Comments
 (0)