@startuml /' ABSTRACT FACTORY '/ class Client interface AbstractFactory { # createProductA() # createProductB() } class ConcreteFactory { + createProductA() + createProductB() } interface AbstractProduct { # somethingProduct() } class ProductA { + somethingProduct() } class ProductB { + somethingProduct() } hide empty members AbstractFactory <|-- ConcreteFactory AbstractProduct <|-- ProductA AbstractProduct <|-- ProductB Client --> AbstractFactory Client --> AbstractProduct note as N1 Abstract Factory Type: Creational Permet la création d'objets qui sont liés à des classes connues et assocées sans avoir à le préciser dans leur classe concrète end note @enduml