Pengertian dan Contoh Pembuatan Java Decorator Pattern

 




Decorator Pattern adalah pattern yang digunakan untuk menambahkan fungsionalitas baru ke dalam objek tanpa merubah struktur objek tersebut. Decorator Pattern termasuk ke dalam Structural Pattern.

Perhatikan illustrasi gambar diatas, dimana objek TextView pada awalnya tidak memiliki atribut apapun, alisa kosong. Kemudian user mengiginkan adanya penambahan fitur pada TextView berupa fitur scroll yang digunakan apabila text melebihi tinggi TextView yang telah ditetapkan. Selain itu, user juga menginginkan adanya fitur border agar telihat lebih menarik. Nah, pada konsep decorator pattern ini fitur tambahan Scroll dan Border juga merupakan sebuah objek. Hanya saja disini dia hanya berperan sebagai objek tambahan bagi objek utama yaitu TextView. Dengan decorator pattern inilah, langkah penambahan fitur dibuat lebih dengan fleksibel dan mudah.
(illustrasi sub : fadlikadn.wordpress.com)


Berikut adalah contoh implementasi dari Decorator Pattern.

Note : Bagi pengguna mobile, mohon aktifkan JavaScript dan matikan fitur Google Web Light untuk melihat kode berikut secara keseluruhan.



  1. Buat interface Shape.java

package main;

public interface Shape {
    
    public void draw();
    
}


  2. Buat class Circle.java

package main;

public class Circle implements Shape{

    @Override
    public void draw() {
        System.out.println("Bentuk : Lingkaran");
    }
    
}


  3. Buat class Square.java

package main;

public class Square implements Shape {

    @Override
    public void draw() {
        System.out.println("Bentuk : Persegi");
    }
    
}



  4. Buat class ShapeDecorator.java

package main;

public abstract class ShapeDecorator implements Shape {
    protected Shape decoratedShape;
    
    public ShapeDecorator(Shape decoratorShape){
        this.decoratedShape = decoratorShape;
    }

    @Override
    public void draw() {
        decoratedShape.draw();
    }
    
}


  5. Buat class RedShapeDecorator.java

package main;

public class RedShapeDecorator extends ShapeDecorator{
    
    public RedShapeDecorator(Shape decoratorShape) {
        super(decoratorShape);
    }
    
    @Override
    public void draw(){
        decoratedShape.draw();
        setRedBorder(decoratedShape);
    }
    
    private void setRedBorder(Shape decoratedShape){
        System.out.println("Warna Border : Merah");
    }
    
}


  6. class Main.java

package main;

public class Main {
    
    public static void main(String[] args){
        
        Shape circle = new Circle();
        
        Shape redCircle = new RedShapeDecorator(new Circle());
        
        Shape redSquare = new RedShapeDecorator(new Square());
        
        System.out.println("Lingkaran tanpa border");
        circle.draw();
        
        System.out.println("\nLingkaran di Border merah");
        redCircle.draw();
        
        System.out.println("\nPersegi di Border merah");
        redSquare.draw();
    }
    
}



  7. Verifikasi Output

Lingkaran tanpa border
Bentuk : Lingkaran

Lingkaran di Border merah
Bentuk : Lingkaran
Warna Border : Merah

Persegi di Border merah
Bentuk : Persegi
Warna Border : Merah




Baca Juga : 
  Java Facade Pattern


Entri Sebelumnya :
  Java Composite Pattern



Pengertian dan Contoh Pembuatan Java Decorator Pattern 4.5 5 Ardyn Sulaeman Decorator Pattern adalah pattern yang digunakan untuk menambahkan fungsionalitas baru ke dalam objek tanpa merubah struktur objek ters...


No comments:

Post a Comment

Powered by Blogger.