建造者模式

概念:建造者模式使用多个简单的对象一步一步构建成一个复杂的对象,这种类型属于创建型模式,它提供了一种创建对象的最佳方法。

主要解决:通常有各个部分的的子对象用一定的算法构成;由于需求的变化,这个复杂的对象的各个部分经常面临剧烈的变化,但是他们组合在一起的算法相对稳定。

1.创建一个表示食物条目的接口

public interface Item{

   public String name();

   public Packing packing();

  public float price();

}

Packing.java

public interface Packing{

   public String pack();

}

2.创建实现Packing接口的实体类

Wrapper.java

public class Wrapper implements Packing{

    public String pack(){

            return "Wrapper";

     }

}

Bottle.java

public class Bottle implements Packing{

      public String pack(){       return "Bottle";}

}

3.创建实现Item接口的抽象类,该类听默认的功能

public abstract class Burger implements Item{

    public Packing packing(){

           return new Wrapper();}

   public abstract float price();

}

public abstarc class ColdDrink implements Item{

  public Packing packing(){

    return new Bottle();

  }

public abstract float price();

}

4.创建扩展了Burgerd和coldeDrink的实体类

public class VegBurger extends Burge{

    public float price(){}

   string name(){}


}

public class Coke extends ColdDrink{

   public float price(){

   return 30.0f; 

 }

  public String name(){

     return "coke";

}

}

5.创建一个mel类,带有上面定义的Item对象

public class Meal{

private List<Item> items=new ArrayList<Item>();


public void addItem(Item item){

  items.add(item);

}

float getCost(){

  float cost=0.0f;

  for(Item item:items){

   cost+=item.price();

 }

 return cost;

}

  public void showTtems(){

         for(Item item:items){}

}

}


建造者模式:是将一个复杂的对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示

1.builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造,实现复杂对象的那些不法的创建,不涉及具体的对象部件的创建

2.ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体的复杂对象的各部分的创建,在建造过程完成户,提供产品的实例。

3.Director:调用具体建造则来创建复杂对象的各个部分,不涉及具体产品的信息,只负责保证对象个部分完整创建或按某顺序创建

4.Product创建的复杂对象

class Product{

     vector<string> parts;

   public:

          void Add(const string part){

         parts.push_back(part);

}

   void show() const{

        for(int i=0;i<parts.size();i++){

        cout<<parts[i]<<endl;

  }


}

   //抽象builder对象

class Builder{

public:

   virtul void BuildHead()=0;

  virtul void buildbody()=0;

....

}

class FatPersonBuilder:public Builder{

  private:

       

}

class ThinPersonBuilder:public Builder

class Director{

   void Construct(Builder builder){

   builder.buildHead();

   builder.buildBody();

  builder.BuildHand();

   builder.BuildFeet();

}

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值