前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之建造者模式

设计模式之建造者模式

作者头像
tanoak
发布2018-10-10 09:44:43
3280
发布2018-10-10 09:44:43
举报
文章被收录于专栏:java闲聊java闲聊
代码语言:javascript
复制
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(ps:简单理解隐藏内部的建造过程和细节,方便创建复杂的对象)
  • UML
  • code /** * @Desc 水果接口 */ public interface FruitBuilder { /** * 创建水果 */ void createFruit(); /** * 水果颜色 */ void buildColor() ; /** * 水果形状 */ void buildShape() ; /** * 创建水果 * @return */ Fruit getFruit(); } @Data public class Fruit { private String name; private String color; private String shape; public Fruit(String name) { this.name = name; } public Fruit() { } }
代码语言:javascript
复制
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;
    }
}
代码语言:javascript
复制
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;
    }
}
代码语言:javascript
复制
public class Soul {
    
    public Fruit createFruit(FruitBuilder fruitBuilder){
        fruitBuilder.createFruit();
        fruitBuilder.buildColor();
        fruitBuilder.buildShape();
        return fruitBuilder.getFruit();
    }

}
代码语言:javascript
复制
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()));
  }
}

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.09.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档