Design Pattern: Strategy Pattern
When there is a group of similar algorithms and we need a pattern to decide among those patterns, then we can use Strategy pattern.
When there is a group of similar algorithms and we need a pattern to decide among those patterns, then we can use Strategy pattern.
In Decorator design pattern, our target is to add some new functionality to an existing object. Say, there is an existing class that is responsible for printing a UI element (like a Button or Table). Later we need the ability to add a border or text color to that element. We can add new properties and functions to that existing class and introduce those properties. But that will violate the Open-Close principle of the SOLID principle.
Decorator pattern is used to attach a new functionality to an existing object, without changing the existing class. This article demonstrates Decorator pattern implementations in Java.
In Proxy design pattern, an object represents another object. So one object works as a proxy of another object. A proxy object represents an interface to the client. The client will not access the actual object directly, it will always use the project object in all cases.
Flyweight pattern is used to reduce the number of objects to save memory and optimize resources. This article demonstrates Flyweight pattern implementations in Java. Check the following examples.
As we need to generate a huge number of objects of the same class, so it will occupy a big amount of memory. To avoid that, we can create objects with only the required elements and keep that in a cache. As only the required properties are there so the number of objects will be smaller now. As the only difference between those objects is their extrinsic properties, we will pass those properties while using that specific object.
Facade pattern is used to hide the complexity of underlying subsystems. A new layer is created as Facade, which works as an entry point for the client. This article demonstrates Facade pattern implementations in Java.
Facade pattern adds a new layer to the system, on top of the underlying complex subsystems. This new layer works as an entry point for the client. The client can interact with this new layer, instead of communicating with the subsystems directly. That way the client does not need to be aware of the subsystems and gets a common interface.
Adapter pattern is used when an interface does not match the new requirement and the existing interface needs to adapt to another interface. This article demonstrates Adapter pattern implementations in Java.
Adapter pattern is used to enable communication between incompatible interfaces.