In this class we have learned Few design pattern and when you look at history of pattern there are several design pattern out there that I haven’t learned. Well today I am going to tack about Decorator design pattern where I am going to show you how I used it to make my code look professional. With Example. Let’s start with what is Decorator Design pattern and how can we implement it in code.
Decorator is a structural design pattern that lets you attach new behaviors to objects by placing these objects inside special wrapper objects that contain the behaviors. The intent is to attach a responsibility to an object at runtime. Sometimes we want to add a responsibility to an object A, not its whole class. … This can be done by wrapping A in another object that adds the responsibility. In other world clint has freedom to create object and then extend it by adding a varity of future to it. just like weapping a gift, putting it in a box and weapping the box.
What are success and failure of using this pattern? So let’s start with successes when you use this pattern in code extend an object’s behavior without making a new subclass., You can add or remove responsibilities from an object at runtime., also You can combine several behaviors by wrapping an object into multiple decorators. Now the failures so It’s hard to remove a specific wrapper from the wrappers stack., The initial configuration code of layers might look pretty ugly.
now let me give you example of how I used it in code.this is just Class diagram. With Step by step about how to implement it.
Step 1: Create an interface FlyBehavior.java witch is blue print to the class which we will Decorate.
Step 2: Create concrete classes implementing the same interface. like FlyWithWings.java and FlyNoWay.java witch will create dynamically.
Step 3: Create abstract decorator class implementing the Shape interface like Duck.java witch contain refrence to interface.
step 4: Create concrete decorator class extending the Duck.java class. RedHeadDuck.java
Step 5: Use the RedHeadDuck to decorate DuckSimulator objects. witch will verigy the outPut.
Now how this pattern have connection with other pattern. Adapter changes the interface of an existing object, while Decorator enhances an object without changing its interface. Decorator lets you change the skin of an object, while Strategy lets you change the guts. Composite and Decorator have similar structure diagrams since both rely on recursive composition to organize an open-ended number of objects.