美文网首页
建造者模式

建造者模式

作者: HelenYin | 来源:发表于2018-12-25 16:06 被阅读0次

纯粹学习笔记。

使用多个简单的对象构造成复杂对象。
一个builder会一步一步的构造成最终的对象。该builder类是独立于其他对象的。
主要用在一个复杂对象的创建。每个子对象实现逻辑可以改变,但是组合在一起之后的逻辑不变。
适用场景:生成的对象具有复杂的内部结构。生成的对象内部本身相互依赖。

案例

一个套餐: 汉堡(Burger)和冷饮(Colddrink),汉堡可以是素食汉堡和鸡肉汉堡,包装是纸质的。冷饮可以是可乐(coke)和百事(pepsi),包装是瓶子。


Item.java
  public interface Item {
    public String name();
    public Packing packing();
    public float price();
  }
Packing.java
  public interface Packing {
    public String pack();
  }

创建Packing接口的实体类。

Wrapper.java
public class Wrapper  implements Packing {
  @Override
  public String pack() {
    return "Wrapper";
  }
}
Bottle.java
public class Bottle implements Packing {
  @Override
  public String pack() {
    return "Bottle";
  }
}
Burger.java
  public abstract class Burger implements Item {
    @Override
    public Packing packing() {
      return new Wrapper();
    }
    @Override
    public abstract float price();
  }
ColdDrink.java
  public abstract class ColdDrink implements Item {
    @Override
    public Packing packing() {
      return new Bottle();
    }
    @Override
    public abstract float price();
  }
VegBurger.java
  public class VegBurger extends Burger {
    @Override
    public String name() {
      return "VegBurger";
    }
    @Override
    public float price() {
      return 25.0f;
    }
  }
ChickenBurger.java
  public class ChickenBurger extends Burger {
    @Override
    public String name() {
      return "ChickenBurger";
    }
    @Override
    public float price() {
      return 50.5f;
    }
  }
Coke.java
  public class Coke extends ColdDrink {
    @Override
    public String name() {
      return "Coke";
    }
    @Override
    public float price() {
      return 30.0f;
    }
  }
Pepsi.java
  public class Pepsi extends ColdDrink {
    @Override
    public String name() {
      return "Pepsi";
    }
    @Override
    public float price() {
      return 35.0f;
    }
  }
Meal.java
  import java.util.ArrayList;
  import java.util.List;

  public class Meal {
    private List<Item> items = new ArrayList<Item>();  
    public void addItem(Item item) {
      Items.add(item);
    }
    public float getCoat() {
      float coats = 0.0f;
      for (Item item : items) {
        coat += item.price();
      }
      return coats;
    }
  }
MealBuilder.java
public class MealBuilder {
   public Meal prepareVegMeal (){
      Meal meal = new Meal();
      meal.addItem(new VegBurger());
      meal.addItem(new Coke());
      return meal;
   }   
 
   public Meal prepareNonVegMeal (){
      Meal meal = new Meal();
      meal.addItem(new ChickenBurger());
      meal.addItem(new Pepsi());
      return meal;
   }
}

相关文章

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • 【设计模式】之建造者Builder模式

    建造者模式 什么是建造者模式? 建造者模式属于创建型模式的一员,可以控制对象的实例化过程。建造者模式简化了复杂对象...

  • 建造者模式

    一、建造者模式介绍 二、建造者模式代码实例

  • 建造者模式

    建造者模式 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和...

  • 建造者模式:深入理解建造者模式 ——组装复杂的实例

    目录: 一 建造者模式介绍 1.1 定义 1.2 为什么要用建造者模式(优点)? 1.3 哪些情况不要用建造者模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 一、设计模式(构建模式)——03建造模式与原型模式

    建造者模式 建造型模式用于创建过程稳定,但配置多变的对象。 建造模式的实现要点: 在建造者模式中,指挥者是直接与客...

  • 创建型模式:建造者模式

    个人公众号原文:创建型模式:建造者模式 五大创建型模式之四:建造者模式。 简介 姓名 :建造者模式 英文名 :Bu...

网友评论

      本文标题:建造者模式

      本文链接:https://www.haomeiwen.com/subject/xjuflqtx.html