StringBuilder使用了建造者模式
首先我们要了解建造者模式的构成。
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。
public class House {
private String floor;
private String wall;
private String housetop;
public String getFloor() {
return floor;
}
public void setFloor(String floor) {
this.floor = floor;
}
public String getWall() {
return wall;
}
public void setWall(String wall) {
this.wall = wall;
}
public String getHousetop() {
return housetop;
}
public void setHousetop(String housetop) {
this.housetop = housetop;
}
}
public interface HouseBuilder {
//修地板
public void makeFloor();
public void makeHousetop();
public void makeWall();
public House getHouse();
}
public class PingFangBuilder implements HouseBuilder {
House house = new House();
@Override
public void makeFloor() {
house.setFloor("平房——地板");
}
@Override
public void makeHousetop() {
house.setHousetop("平房——房顶");
}
@Override
public void makeWall() {
house.setWall("平房——墙");
}
@Override
public House getHouse() {
// TODO Auto-generated method stub
return house;
}
}
public class GongyuBuilder implements HouseBuilder {
House house = new House();
@Override
public void makeFloor() {
house.setFloor("公寓——地板");
}
@Override
public void makeHousetop() {
house.setHousetop("公寓——房顶");
}
@Override
public void makeWall() {
house.setWall("公寓——墙");
}
@Override
public House getHouse() {
// TODO Auto-generated method stub
return house;
}
}
public class HouseDicrector {
/*private HouseBuilder houseBuilder;
public HouseDicrector(HouseBuilder houseBuilder) {
this.houseBuilder = houseBuilder;
}*/
public void makeHouse(HouseBuilder houseBuilder){
houseBuilder.makeFloor();
houseBuilder.makeHousetop();
houseBuilder.makeWall();
}
}
public class MainClass {
public static void main(String[] args) {
/*//客户直接修房子
House house = new House();
house.setFloor("地板");*/
//有工程队修
//HouseBuilder houseBuilder = new PingFangBuilder();
HouseBuilder houseBuilder = new GongyuBuilder();
/*//调用工程队修
houseBuilder.makeFloor();
houseBuilder.makeHousetop();
houseBuilder.makeWall();*/
//由设计者修
/*HouseDicrector houseDicrector = new HouseDicrector(houseBuilder);
houseDicrector.makeHouse();*/
HouseDicrector houseDicrector = new HouseDicrector();
houseDicrector.makeHouse(houseBuilder);
House house = houseBuilder.getHouse();
System.out.println(house.getFloor());
System.out.println(house.getWall());
System.out.println(house.getHousetop());
}
}