建造者
就是装修房子,直接上才艺。
这里拿代码直接跑:
GitHub
我老婆开始指挥了,启动类
public class Client {
public static void main(String[] args) {
// 首先我要自己知道我有房子要做事了,但是我要怎么做,还要看老婆指挥
Decorator decorator = new DecoratorOne();
// 然后我老婆就要开始逼逼赖赖,房子还是他说了算,房子给他了
Manager manager = new Manager(decorator);
// 开始发话了,我去忙了
Parlour parlour = manager.decorate();
// 弄好了,拿来把你
parlour.show();
}
}
修房子要做的事,抽象
public abstract class Decorator {
protected Parlour product = new Parlour();
public abstract void buildWall();
public abstract void buildTv();
public abstract void buildSofa();
public Parlour getResult() {
return product;
}
}
这是我的房子,我要自己装修
public class DecoratorOne extends Decorator {
@Override
public void buildWall() {
System.out.println("砌墙,呼呼呼~~~~~");
product.setWall("大白墙");
}
@Override
public void buildTv() {
System.out.println("买电视...");
product.setTv("买好了,小米的");
}
@Override
public void buildSofa() {
System.out.println("买沙发");
product.setSofa("布沙发,拿来吧你");
}
}
这是我老婆,装房子不会,但是会指挥
public class Manager {
private final Decorator builder;
public Manager(Decorator builder) {
this.builder = builder;
}
public Parlour decorate(){
builder.buildWall();
builder.buildTv();
builder.buildSofa();
return builder.getResult();
}
}
房子
public class Parlour {
private String wall;
private String tv;
private String sofa;
public void show() {
System.out.println(wall);
System.out.println(tv);
System.out.println(sofa);
}
public void setWall(String wall) {
this.wall = wall;
}
public void setTv(String tv) {
this.tv = tv;
}
public void setSofa(String sofa) {
this.sofa = sofa;
}
}