JavaRush /Blog Jawa /Random-JV /Pola desain dekorator kanthi conto
Sbv239
tingkat
Санкт-Петербург

Pola desain dekorator kanthi conto

Diterbitake ing grup
Pola desain dekorator ngidini kita nambah fungsionalitas kanthi dinamis menyang obyek tanpa mengaruhi prilaku obyek saka kelas sing padha. Muni rada mbingungake, nanging yen sampeyan ndeleng kode, kabeh bakal dadi luwih jelas. Fitur - Dekorator ngidini sampeyan nambah fungsi menyang obyek sing ana tanpa ngganti strukture, yaiku, kelas asli ora owah - Pola desain dekorator minangka pola struktural sing nyedhiyakake bungkus kanggo kelas sing wis ana - Kelas dekorator digawe sing Lebokake kelas asli lan nyedhiyani fungsi tambahan nalika ngreksa cara teken saka kelas asli utuh - Pola desain decorator paling asring digunakake kanggo tindakake prinsip tanggung jawab siji saka SOLID, awit kita ora mbukak kelas asli karo tanggung jawab tambahan, nanging dibagi mau. menyang kelas dekorator - Dekorator kanthi struktur meh padha karo pola rantai tanggung jawab (rantai tanggung jawab) Titik kunci ing ngisor iki kudu digatekake - Dekorator migunani kanggo bisa ngowahi prilaku obyek sajrone runtime. Kode iki gampang kanggo njaga lan ngluwihi. - Kerugian pola iki yaiku akeh obyek dekorator saka jinis sing padha digunakake - Pola dekorator asring digunakake ing kelas Java IO (FileReader, BufferedReader, lsp.) Apa sing bakal ditindakake - Nggawe antarmuka - Nggawe konkrit implementasi antarmuka iki - Nggawe dekorator abstrak, ngleksanakake antarmuka iki - Ayo nggawe dekorator beton sing warisan saka dekorator abstrak - Gunakake dekorator beton kanggo "nghias" implementasi konkrit saka antarmuka Implementasi : Kita bakal nggawe antarmuka Shape lan kelas konkrit. sing ngleksanakake antarmuka iki. Sabanjure, kita bakal nggawe kelas dekorator abstrak, ShapeDecorator, sing ngetrapake antarmuka Shape lan duwe obyek Shape minangka lapangan kelas. Pola desain dekorator kanthi conto - 1 - Shape minangka jeneng antarmuka - Kelas Rectangle, Triangle lan Circle bakal dadi kelas konkrit sing ngetrapake antarmuka Shape - ShapeDecorator minangka kelas dekorator abstrak sing ngetrapake antarmuka Shape sing padha - RedShapeDecorator minangka kelas konkrit sing ngetrapake ShapeDecorator - Demo yaiku kelas demo sing bakal digunakake RedShapeDecorator kanggo dekorasi obyek Shape Langkah 1 : nggawe antarmuka Shape
public interface Shape {
    void draw();
}
Langkah 2 : Ayo nggawe sawetara implementasi antarmuka iki. Ing conto ing ngisor iki mung bakal ana bunder, nanging nyatane kita bakal nggawe saperangan liyane: persegi dowo lan segi telu.
public class Circle implements Shape{
    @Override
    public void draw() {
        System.out.println("Я круг!");
    }
}
Langkah 3 : Nggawe dekorator abstrak sing ngetrapake 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 : nggawe kelas dekorator konkrit sing warisan saka 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 : Gunakake RedShapeDecorator kanggo Werna 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 : deleng console lan bungaha
Обычный круг:
Я круг!

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

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

Треугольник с красной границей:
Я треугольник!
Сообщение от RedShapeDecorator. Цвет границы: красный
Sawise nganalisa pola desain dekorator minangka conto, kita bisa nyimpulake manawa panggunaane dibenerake ing kasus ing ngisor iki: - Nalika kita pengin nambah, nambah utawa bisa uga mbusak prilaku utawa kahanan obyek - Nalika kita mung pengin ngganti fungsi. saka siji obyek tartamtu saka kelas lan ninggalake liyane ora owah-owahan Matur nuwun! Repositori karo file proyek Adhedhasar artikel saka situs geeksforgeeks.org Blogku kanggo Java Dev pemula
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION