Decorator
pattern is a design pattern that allows behavior to be added to an
individual object, either statically or dynamically, without
affecting the behavior of other objects from the same class.
Lets
take an example, where a company offer services to decorate your
home.
Below
decorating styles are offered.
a.
Decorating with Natural Flowers
b.
Decorating with Artificial Flowers
c. Decorating
with lights.
d. Decorating
with combinations of a, b or c.
interface Decorator { void draw(); }
public final class NaturalFlowersDecorate implements Decorator{ Decorator decor; @Override public void draw(){ if(decor != null){ decor.draw(); } System.out.println("Decorating with Natural flowers"); } NaturalFlowersDecorate(){ } NaturalFlowersDecorate(Decorator decor){ this.decor = decor; } }
public class ArtifitialFlowerDecorate implements Decorator{ Decorator decor; ArtifitialFlowerDecorate(){ } @Override public void draw(){ if(decor != null){ decor.draw(); } System.out.println("Decorating with Artifitial flowers"); } ArtifitialFlowerDecorate(Decorator decor){ this.decor = decor; } }
public class LightsDecorate implements Decorator{ Decorator decor; LightsDecorate(){ } @Override public void draw(){ if(decor != null){ decor.draw(); } System.out.println("Decorating with lights"); } LightsDecorate(Decorator decor){ this.decor = decor; } }
public class TestDecorator{ public static void main(String args[]){ LightsDecorate lightDec; lightDec = new LightsDecorate(new NaturalFlowersDecorate(new ArtifitialFlowerDecorate())); lightDec.draw(); } }
Output
Decorating with Artifitial flowers Decorating with Natural flowers Decorating with lights
No comments:
Post a Comment