parent
79b5f7ecf5
commit
2a3c1c5a3c
@ -0,0 +1,44 @@
|
||||
package com.msb.builder;/**
|
||||
* @Author bingor
|
||||
* @Date 2022/10/18 16:34
|
||||
* @Description: com.msb.builder
|
||||
* @Version: 1.0
|
||||
*/
|
||||
|
||||
/**
|
||||
*@ClassName ComplexTerrainBuilder
|
||||
*@Description TODO
|
||||
*@Author bingor
|
||||
*@Date 2022/10/18 16:34
|
||||
*@Version 3.0
|
||||
*/
|
||||
public class ComplexTerrainBuilder implements TerrainBuilder {
|
||||
|
||||
private Terrain terrain = new Terrain();
|
||||
|
||||
@Override
|
||||
public TerrainBuilder buildWall() {
|
||||
Wall wall = new Wall(10, 10, 50, 50);
|
||||
terrain.setWall(wall);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TerrainBuilder buildFort() {
|
||||
Fort fort = new Fort(10, 10, 50, 50);
|
||||
terrain.setFort(fort);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TerrainBuilder buildMine() {
|
||||
Mine mine = new Mine(10, 10, 50, 50);
|
||||
terrain.setMine(mine);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Terrain build() {
|
||||
return terrain;
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.msb.builder;/**
|
||||
* @Author bingor
|
||||
* @Date 2022/10/18 16:42
|
||||
* @Description: com.msb.builder
|
||||
* @Version: 1.0
|
||||
*/
|
||||
|
||||
/**
|
||||
*@ClassName Main
|
||||
*@Description TODO
|
||||
*@Author bingor
|
||||
*@Date 2022/10/18 16:42
|
||||
*@Version 3.0
|
||||
*/
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
TerrainBuilder terrainBuilder = new ComplexTerrainBuilder();
|
||||
Terrain terrain = terrainBuilder.buildWall().buildFort().buildMine().build();
|
||||
|
||||
Person person = new Person.PersonBuilder().buildBasicInfo(1, "bingor")
|
||||
.buildAge(33)
|
||||
.buildScore(100)
|
||||
.buildLocation("机场路", "8号")
|
||||
.build();
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package com.msb.builder;/**
|
||||
* @Author bingor
|
||||
* @Date 2022/10/18 16:51
|
||||
* @Description: com.msb.builder
|
||||
* @Version: 1.0
|
||||
*/
|
||||
|
||||
/**
|
||||
*@ClassName Person
|
||||
*@Description TODO
|
||||
*@Author bingor
|
||||
*@Date 2022/10/18 16:51
|
||||
*@Version 3.0
|
||||
*/
|
||||
public class Person {
|
||||
private int id;
|
||||
private int age;
|
||||
private String name;
|
||||
private int score;
|
||||
private Location location;
|
||||
|
||||
public static class PersonBuilder {
|
||||
Person person = new Person();
|
||||
public PersonBuilder buildBasicInfo(int id, String name) {
|
||||
person.id = id;
|
||||
person.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PersonBuilder buildAge(int age) {
|
||||
person.age = age;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PersonBuilder buildScore(int score) {
|
||||
person.score = score;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PersonBuilder buildLocation(String street, String roomNo) {
|
||||
person.location = new Location(street, roomNo);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Person build() {
|
||||
return person;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Location {
|
||||
private String street;
|
||||
private String roomNo;
|
||||
|
||||
public Location(String street, String roomNo) {
|
||||
this.street = street;
|
||||
this.roomNo = roomNo;
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package com.msb.builder;/**
|
||||
* @Author bingor
|
||||
* @Date 2022/10/18 15:46
|
||||
* @Description: com.msb.builder
|
||||
* @Version: 1.0
|
||||
*/
|
||||
|
||||
/**
|
||||
*@ClassName Terrain
|
||||
*@Description TODO
|
||||
*@Author bingor
|
||||
*@Date 2022/10/18 15:46
|
||||
*@Version 3.0
|
||||
*/
|
||||
public class Terrain {
|
||||
private Wall wall;
|
||||
private Fort fort;
|
||||
private Mine mine;
|
||||
|
||||
public void setWall(Wall wall) {
|
||||
this.wall = wall;
|
||||
}
|
||||
|
||||
public void setFort(Fort fort) {
|
||||
this.fort = fort;
|
||||
}
|
||||
|
||||
public void setMine(Mine mine) {
|
||||
this.mine = mine;
|
||||
}
|
||||
}
|
||||
|
||||
class Wall {
|
||||
private int x, y, width, height;
|
||||
public Wall(int x, int y, int width, int height) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
}
|
||||
|
||||
class Fort {
|
||||
private int x, y, width, height;
|
||||
public Fort(int x, int y, int width, int height) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
}
|
||||
|
||||
class Mine {
|
||||
private int x, y, width, height;
|
||||
public Mine(int x, int y, int width, int height) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.msb.builder;
|
||||
|
||||
/**
|
||||
* @Author bingor
|
||||
* @Date 2022/10/18 16:33
|
||||
* @Description: com.msb.builder
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public interface TerrainBuilder {
|
||||
public TerrainBuilder buildWall();
|
||||
public TerrainBuilder buildFort();
|
||||
public TerrainBuilder buildMine();
|
||||
public Terrain build();
|
||||
}
|
Loading…
Reference in new issue