O padrão do decorador permite que a nova funcionalidade seja adicionada a um objeto existente sem alterar sua estrutura. Esse tipo de padrão de design pertence ao padrão estrutural, que é um pacote de classes existentes.
Esse padrão cria uma classe decorativa para envolver a classe original e fornece funcionalidade adicional, mantendo a integridade da assinatura do método de classe.
Demonstramos o uso do modo decorador no exemplo a seguir. Entre eles, decoraremos uma forma com cores diferentes sem alterar a classe de forma.
concluir
Criaremos uma interface de forma e uma classe de entidade que implementa a interface de forma. Em seguida, criamos uma classe decorativa abstrata ShapeDeCorator que implementa a interface da forma e usamos o objeto de forma como sua variável de instância.
RedShapeDecorator é uma classe de entidade que implementa o ShapeDECORATOR.
DecoratorPatterNDemo, nossa classe de demonstração usa o RedShapeDecorator para decorar objetos de forma.
Etapa 1
Crie uma interface.
Shape.java
forma de interface pública {void draw ();}Etapa 2
Crie uma classe de entidade que implemente a interface.
Retângulo.java
classe pública Retângulo implementa a forma {@Override public void draw () {System.out.println ("Shape: Rectangle"); }}Circ.java
public class Circle implementa a forma {@Override public void draw () {System.out.println ("Shape: Circle"); }}Etapa 3
Crie uma classe decorativa abstrata que implemente a interface de forma.
Shapedecorator.java
Classe abstrata pública ShapeDeCorator implementa a forma {forma protegida decorada em forma de decoração; public ShapeDecorator (Shape DecoratedShape) {this.DecoratedShape = DecoratedShape; } public void draw () {decoratedShape.Draw (); }}Etapa 4
Cria uma classe decorativa de entidade que se estende da classe ShapeDecorator.
RedShapeDecorator.java
classe pública RedShapeDecorator estende ShapeDecorator {public RedShapeDecorator (Shape DecoratedShape) {Super (DecoratedShape); } @Override public void draw () {decoratedShape.draw (); SetDorder (DecoratedShape); } private void SetDorDorder (Shape DecoratedShape) {System.out.println ("Cor da borda: vermelho"); }}Etapa 5
Use RedShapeDecorator para decorar objetos de forma.
Decoratorpatterndemo.java
public classe DecoratorPatterNDemo {public static void main (string [] args) {shape círculo = new Circle (); Forma redcircle = novo redshapedeCorator (new círculo ()); RedRectangle de forma = novo RedShapeDecorator (new Rectangle ()); System.out.println ("círculo com borda normal"); circ.draw (); System.out.println ("/ncircle of Red Border"); redcircle.draw (); System.out.println ("/nrectangle of Red Border"); redrectangle.draw (); }}Etapa 6
Verifique a saída.
Círculo com Bordershape Normal: CircleCircle of Red Bordershape: Circleborder Color: Redrectange of Red Bordershape: Rectangânia Cor: Vermelho
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!