@startuml

class Pizza {
  -crust
  -toppings
  -sauce
  +setCrust()
  +setToppings()
  +setSauce()
}

interface PizzaBuilder {
  #Pizza pizza_
  +buildCrust()
  +buildToppings()
  +buildSauce()
  +getPizza() : Pizza 
}

class ItalianPizzaBuilder {
}

class HawaiianPizzaBuilder {
}

class Cook {
  +setPizzaBuilder(Builder& builder)
  +makePizza()
}

PizzaBuilder *-left- Pizza
PizzaBuilder <|-- ItalianPizzaBuilder
PizzaBuilder <|-- HawaiianPizzaBuilder
Cook -left-> PizzaBuilder

@enduml
