classDiagram
class AbstractFactory{
<
+createProductA() AbstractProductA
+createProductB() AbstractProductB
}
class ConcreteFactory1 {
+createProductA() ProductA1
+createProductB() ProductB1
}
class ConcreteFactory2 {
+createProductA() ProductA2
+createProductB() ProductB2
}
class AbstractProductA {
<<interface>>
+operationA()
}
class ProductA1 {
+operationA()
}
class ProductA2 {
+operationA()
}
class AbstractProductB {
<<interface>>
+operationB()
}
class ProductB1 {
+operationB()
}
class ProductB2 {
+operationB()
}
AbstractFactory <|.. ConcreteFactory1
AbstractFactory <|.. ConcreteFactory2
AbstractProductA <|.. ProductA1
AbstractProductA <|.. ProductA2
AbstractProductB <|.. ProductB1
AbstractProductB <|.. ProductB2
ConcreteFactory1 --> ProductA1
ConcreteFactory1 --> ProductB1
ConcreteFactory2 --> ProductA2
ConcreteFactory2 --> ProductB2