java设计模式——建造者模式

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());
		
		
	}
}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值