设计模式之建造者模式

2018-09-11  本文已影响7人  tanoak
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(ps:简单理解隐藏内部的建造过程和细节,方便创建复杂的对象)
public class BananaBuilder implements FruitBuilder {

    private Fruit fruit;

    @Override
    public void createFruit() {
        this.fruit = new Fruit("香蕉") ;
    }

    @Override
    public void buildColor() {
        this.fruit.setColor("红色");
    }

    @Override
    public void buildShape() {
        this.fruit.setShape("圆形");
    }

    @Override
    public Fruit getFruit() {
        return fruit;
    }
}
public class AppleBuilder implements FruitBuilder {

    private Fruit fruit;

    @Override
    public void createFruit( ) {
        this.fruit= new Fruit("苹果") ;
    }

    @Override
    public void buildColor() {
        this.fruit.setColor("蓝色");
    }

    @Override
    public void buildShape() {
        this.fruit.setShape("椭圆形");
    }

    @Override
    public Fruit getFruit() {
        return fruit;
    }
}
public class Soul {
    
    public Fruit createFruit(FruitBuilder fruitBuilder){
        fruitBuilder.createFruit();
        fruitBuilder.buildColor();
        fruitBuilder.buildShape();
        return fruitBuilder.getFruit();
    }

}
public class Main {

  public static void main(String[] args) {
      Soul soul = new Soul();
      //苹果
      System.out.println("生产了:" + soul.createFruit(new AppleBuilder()));
      System.out.println("----------------------------------------");

      //香蕉
      System.out.println("生产了:" + soul.createFruit(new BananaBuilder()));
  }
}

建造者模式与工厂模式类似,但是建造者模式能应对更加复杂的创建过程。

上一篇 下一篇

猜你喜欢

热点阅读