Software Design Patterns: Factories Are Not Builders | by Leonardo Santos | Apr, 2022

The distinction between Manufacturing facility and Builder design patterns

Design patterns are helpful once you want a typical guideline for widespread issues in Software program Engineering, and having data of their existence will aid you discover a resolution that most closely fits your drawback.

I’ve seen factories being applied like builders and vice versa, and implementations like this may trigger confusion and stop us from utilizing their full energy. I hope this text lets you discover the distinction between these two patterns and their widespread implementations.

Generally we have now to construct parts that want to point out some type of info and it adapts relying on the quantity of knowledge that has been given.

To provide you a fundamental instance of a typical drawback I’ve designed this type of Backside Sheet element with several types of “model” relying on the content material offered.

Picture exhibiting three kinds of a easy Backside Sheet Element

The Factory Method sample is a creational design sample accountable for offering a easy interface for object initialization, without having to reveal any concrete lessons. Mainly, is an object accountable for initializing different objects.

As one other instance, you should utilize a swap containing a number of kinds for this object, like .small, .medium and .giant

We all know that this swap can turn into actually advanced relying on how a lot the venture scales, so if this occurs you possibly can create extra factories containing remoted logic to your kinds. For instance, you possibly can extract the .giant logic to a LargeBottomSheetFactory.

The Builder sample is a creational design sample that’s extra widespread to see in languages like Java than Swift. The primary concept is that it permits us to construct Merchandise step-by-step utilizing strategies to arrange an object the best way we wish and one single technique on the finish to construct it, with out exposing the thing creation/configuration and properties.

As you possibly can see, all strategies apart from the construct() returns Self (aka the Builder itself). Doing it like this allows us to create a “Chained” builder implementation. The thought behind the builder is that the element will construct relying on how a lot info you cross to the builder.

The Builder Sample additionally permits us to create Director lessons. These lessons are principally objects which have builders as a dependency and supply a simplified interface for different objects to construct a Product with out utilizing the builder instantly, as you possibly can see within the instance beneath.

If you wish to create an object with many attainable configurations however don’t have to have all the knowledge in the mean time to construct it, you should utilize the Builder Design Sample. This sample offers a easy interface to cover advanced object duties, permits us to denationalise lots of public properties, and reduces the necessity to preserve a mutable state.

When you want to encapsulate the logic for initializing some object, you may as well decide to make use of the Manufacturing facility Design Sample. This sample assure which you can simplify the best way you create an object throughout the code, keep away from delegating the creation to a subclass, and keep away from code duplication because you needn’t cross all of its dependencies over and over. You’ve all centralized in a single place, the manufacturing facility.

Each patterns are creational design patterns that present us mechanisms for object initialization with flexibility and scalability, with out the necessity to entry the thing properties or initializer instantly, however as you noticed, they’re not the identical. In fact, there’s no ‘greatest one’, so you’ll select those that match greatest your drawback.

Now, it’s best to be capable of establish and apply these patterns accurately.

More Posts