Creational Design Patterns
Creational Design Patterns provide various object creation mechanisms, which increase flexibility and reuse of existing code.
2. Factory Method
The Factory Method Design Pattern is a creational design pattern used in software engineering to provide an interface for creating objects in a superclass, while allowing subclasses to alter the type of objects that will be created.
DesignTool
Bases: ABC
Abstract base class for design tools.
Source code in src/creational/factory.py
Figma
Bases: DesignTool
Concrete implementation of the DesignTool interface for Figma.
Source code in src/creational/factory.py
AdobeXD
Bases: DesignTool
Concrete implementation of the DesignTool interface for AdobeXD.
Source code in src/creational/factory.py
Zeplin
Bases: DesignTool
Concrete implementation of the DesignTool interface for Zeplin.
Source code in src/creational/factory.py
DesignToolProvider
Bases: ABC
Abstract base class for design tool providers.
Source code in src/creational/factory.py
FigmaProvider
Bases: DesignToolProvider
Concrete implementation of the DesignToolProvider interface for Figma.
Source code in src/creational/factory.py
AdobeXDProvider
Bases: DesignToolProvider
Concrete implementation of the DesignToolProvider interface for AdobeXD.
Source code in src/creational/factory.py
ZeplinProvider
Bases: DesignToolProvider
Concrete implementation of the DesignToolProvider interface for Zeplin.
Source code in src/creational/factory.py
Designer
Class representing a designer who creates designs using a specific design tool.
Source code in src/creational/factory.py
__init__(designToolProvider)
Initializes a Designer object with the provided design tool provider.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
designToolProvider |
DesignToolProvider
|
A provider of design tools. |
required |
Source code in src/creational/factory.py
createDesign()
Creates a design using the selected design tool.
Returns:
| Name | Type | Description |
|---|---|---|
DesignTool |
DesignTool
|
The design tool used to create the design. |
main()
Steps to implement:
1. Create Provider's Instance
2. Create a Designer Instance by providing Provider's instance
3. Call the method using Designer's Instance
Source code in src/creational/factory.py
Source Code
Class Diagram
classDiagram
class DesignTool {
createDesign()
}
class Figma {
createDesign()
}
class AdobeXD {
createDesign()
}
class Zeplin {
createDesign()
}
class DesignToolProvider {
getDesignTool()
}
class FigmaProvider {
getDesignTool()
}
class AdobeXDProvider {
getDesignTool()
}
class ZeplinProvider {
getDesignTool()
}
class Designer {
createDesign()
}
DesignTool <|-- DesignToolProvider
Designer --|> DesignToolProvider
DesignToolProvider --|> FigmaProvider
DesignToolProvider --|> AdobeXDProvider
DesignToolProvider --|> ZeplinProvider
DesignTool --|> Figma
DesignTool --|> AdobeXD
DesignTool --|> Zeplin