Design Patterns: Abstract Factory

June 8, 2024·3 min read

Design PatternsCoding

In the last article I explored how to implement the Singleton pattern in Rust, I will continue with another creational design pattern, the Abstract Factory pattern.

The Abstract Factory pattern is a creational design pattern that provides an interface for creating families of related or dependent objects without specifying their concrete classes. This pattern is particularly useful when the system needs to be independent of the way its objects are created. Let's explore the Abstract Factory pattern in Rust with a practical example involving themed buttons and checkboxes.

The code can be found in Github

Defining the Products

First, we define the traits for our products. In this example, we'll have Button and Checkbox as our products, each with a render method. The Checkbox trait also includes a default toggle_check method.

Implementing Concrete Products

Next, we create concrete implementations for these products for both Dark and Light themes.

Creating the Abstract Factory Interface

We define an abstract factory trait that declares methods for creating abstract products. This trait will be implemented by our concrete factories.

Implementing Concrete Factories

We then implement the concrete factories for creating Dark and Light theme products.

Rendering the UI

Finally, we write a function to render the UI using a given theme factory. This function will create and render the themed buttons and checkboxes.

The Abstract Factory pattern is a powerful tool for creating families of related objects while keeping the client code decoupled from their specific classes (or structs in the case of Rust).