JavaRush /Java Blog /Random-ID /Pola desain dekorator dengan contoh
Sbv239
Level 23
Санкт-Петербург

Pola desain dekorator dengan contoh

Dipublikasikan di grup Random-ID
Pola desain dekorator memungkinkan kita menambahkan fungsionalitas secara dinamis ke suatu objek tanpa mempengaruhi perilaku objek dari kelas yang sama. Kedengarannya agak membingungkan, tetapi begitu Anda melihat kodenya, semuanya akan menjadi lebih jelas. Fitur - Dekorator memungkinkan Anda untuk menambahkan fungsionalitas ke objek yang sudah ada tanpa mengubah strukturnya, yaitu kelas asli tidak berubah - Pola desain dekorator adalah pola struktural yang menyediakan pembungkus untuk kelas yang ada - Kelas dekorator dibuat yang membungkus kelas asli dan menyediakan fungsionalitas tambahan sambil menjaga tanda tangan metode dari kelas asli tetap utuh - Pola desain dekorator paling sering digunakan untuk mengikuti prinsip tanggung jawab tunggal dari SOLID, karena kami tidak memuat kelas asli dengan tanggung jawab tambahan, tetapi membaginya ke dalam kelas dekorator - Dekorator secara struktural hampir mirip dengan pola rantai tanggung jawab (rantai tanggung jawab) Poin-poin penting berikut harus diperhatikan - Dekorator berguna untuk dapat memodifikasi perilaku suatu objek selama runtime. Kode ini mudah dipelihara dan diperluas. - Kekurangan dari pola ini adalah banyaknya objek dekorator dengan tipe yang sama yang digunakan - Pola dekorator sering digunakan di kelas Java IO (FileReader, BufferedReader, dll.) Yang akan kita lakukan - Membuat antarmuka - Membuat beton implementasi antarmuka ini - Buat dekorator abstrak, implementasikan antarmuka ini - Mari buat dekorator konkrit yang mewarisi dekorator abstrak - Gunakan dekorator konkrit untuk "menghias" implementasi konkrit antarmuka Implementasi : Kita akan membuat antarmuka Bentuk dan kelas konkrit yang mengimplementasikan antarmuka ini. Selanjutnya, kita akan membuat kelas dekorator abstrak, ShapeDecorator, yang mengimplementasikan antarmuka Shape dan memiliki objek Shape sebagai bidang kelas. Pola desain dekorator beserta contohnya - 1 - Shape adalah nama antarmukanya - Kelas Rectangle, Triangle, dan Circle akan menjadi kelas konkrit yang mengimplementasikan antarmuka Shape - ShapeDecorator adalah kelas dekorator abstrak yang mengimplementasikan antarmuka Shape yang sama - RedShapeDecorator adalah kelas konkrit yang mengimplementasikan ShapeDecorator - Demo adalah kelas demo dimana kita akan menggunakan RedShapeDecorator untuk mendekorasi objek Shape Langkah 1 : membuat antarmuka Shape

public interface Shape {
    void draw();
}
Langkah 2 : Mari buat beberapa implementasi antarmuka ini. Pada contoh di bawah ini hanya akan ada sebuah lingkaran, namun sebenarnya kita akan membuat beberapa lagi: persegi panjang dan segitiga.

public class Circle implements Shape{
    @Override
    public void draw() {
        System.out.println("Я круг!");
    }
}
Langkah 3 : Buat dekorator abstrak yang mengimplementasikan antarmuka Shape

public abstract class ShapeDecorator implements Shape {
    
    protected Shape decoratedShape;
    
    //Конструктор, принимающий an object Shape
    public ShapeDecorator(Shape decoratedShape) {
        this.decoratedShape = decoratedShape;
    }
    
    public void draw() {
        decoratedShape.draw();
    }
}
Langkah 4 : buat kelas dekorator konkrit yang mewarisi kelas abstrak

public class RedShapeDecorator extends ShapeDecorator{

    public RedShapeDecorator(Shape decoratedShape) {
        super(decoratedShape);
    }

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

    private void setRedBorder(Shape decoratedShape) {
        System.out.println("Сообщение от RedShapeDecorator. Цвет границы: красный");
    }
}
Langkah 5 : Gunakan RedShapeDecorator untuk Mewarnai Objek Kita

public class Demo {
    public static void main(String[] args)
    {
        Shape circle = new Circle();
        Shape redCircle= new RedShapeDecorator(new Circle());
        Shape redRectangle= new RedShapeDecorator(new Rectangle());
        Shape redTriangle = new RedShapeDecorator(new Triangle());

        System.out.println("\nОбычный круг:");
        circle.draw();

        System.out.println("\nКруг с красной границей:");
        redCircle.draw();

        System.out.println("\nПрямоугольник с красной границей:");
        redRectangle.draw();

        System.out.println("\nТреугольник с красной границей:");
        redTriangle.draw();
    }
}
Langkah 6 : lihat konsol dan bergembiralah

Обычный круг:
Я круг!

Круг с красной границей:
Я круг!
Сообщение от RedShapeDecorator. Цвет границы: красный

Прямоугольник с красной границей:
Я прямоугольник!
Сообщение от RedShapeDecorator. Цвет границы: красный

Треугольник с красной границей:
Я треугольник!
Сообщение от RedShapeDecorator. Цвет границы: красный
Setelah menganalisis pola desain dekorator sebagai contoh, kita dapat menyimpulkan bahwa penggunaannya dibenarkan dalam kasus berikut: - Saat kita ingin menambah, meningkatkan, atau mungkin menghapus perilaku atau keadaan suatu objek - Saat kita hanya ingin mengubah fungsionalitas dari satu objek tertentu di suatu kelas dan biarkan sisanya tidak berubah Terima kasih! Repositori dengan file proyek Berdasarkan artikel dari situs geeksforgeeks.org Blog saya untuk Java Dev pemula
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION