@startuml /' BUILDER '/ class Director { - builder + construct() + setBuilder(Builder) + Product getProduct() } interface Builder { # buildPartA() # buildPartB() # buildPartC() } class ConcreteBuilderFirst { + buildPartA() + buildPartB() + buildPartC() + getResult() } class ConcreteBuilderSecond { + buildPartA() + buildPartB() + buildPartC() + getResult() } Director *- Builder Builder <|-- ConcreteBuilderFirst Builder <|-- ConcreteBuilderSecond note as N1 Builder Type: Creational Permet la séparation des méthodes de construction - un objet complexe peut avoir différentes représentations. end note @enduml