Rumah  >  Artikel  >  Java  >  Apakah kaedah pelaksanaan corak penghias dalam rangka kerja java?

Apakah kaedah pelaksanaan corak penghias dalam rangka kerja java?

WBOY
WBOYasal
2024-06-01 19:37:00557semak imbas

Corak penghias boleh dilaksanakan dalam rangka kerja Java dalam tiga cara berikut: 1. Penghias antara muka: Cipta kelas baharu yang melaksanakan antara muka khusus dan menambah gelagat pada kelas sedia ada. 2. Penghias kelas: Cipta kelas baharu yang diwarisi daripada kelas sedia ada dan tambah gelagat baharu. 3. Penghias anotasi: Gunakan anotasi untuk melanjutkan kelas sedia ada dan menambah gelagat melalui anotasi tersuai. Corak ini digunakan secara meluas dalam rangka kerja pengelogan, seperti menapis log atau menambah cap masa.

Apakah kaedah pelaksanaan corak penghias dalam rangka kerja java?

Cara melaksanakan corak penghias dalam rangka kerja Java

Corak penghias ialah corak reka bentuk struktur yang membolehkan anda menambah fungsi baharu secara dinamik pada objek tanpa mengubah suai kelas asal. Dalam rangka kerja Java, corak penghias mempunyai kaedah pelaksanaan berikut:

1. Penghias antara muka

Kaedah pelaksanaan ini memanjangkan kelas sedia ada dengan mencipta kelas baharu yang melaksanakan antara muka tertentu. Kelas baharu boleh menambah gelagat tambahan pada kelas sedia ada tanpa mengubah suai kod kelas sedia ada.

public interface Shape {
    void draw();
}

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a rectangle");
    }
}

public class DecoratedRectangle implements Shape {
    private Shape shape;

    public DecoratedRectangle(Shape shape) {
        this.shape = shape;
    }

    @Override
    public void draw() {
        shape.draw();
        System.out.println("Adding extra decoration to rectangle");
    }
}

2. Penghias Kelas

Pelaksanaan ini melanjutkan kelas sedia ada dengan mencipta kelas baharu yang diwarisi daripada kelas sedia ada dan menambah gelagat baharu.

public class Shape {
    public void draw() {
        System.out.println("Drawing a shape");
    }
}

public class DecoratedShape extends Shape {
    @Override
    public void draw() {
        super.draw();
        System.out.println("Adding extra decoration to shape");
    }
}

3. Penghias Anotasi

Pelaksanaan ini menggunakan anotasi Java untuk melanjutkan kelas sedia ada. Tingkah laku baharu boleh ditambah dengan membuat anotasi tersuai dan kemudian menggunakan anotasi pada kelas sedia ada.

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Decorated {
    String value();
}

public class Shape {
    public void draw() {
        System.out.println("Drawing a shape");
    }
}

@Decorated("rectangle")
public class Rectangle extends Shape {
    @Override
    public void draw() {
        super.draw();
        System.out.println("Drawing a rectangle");
    }
}

Kes praktikal

Dalam rangka kerja pengelogan, corak penghias digunakan untuk menambah fungsi tambahan pada log, seperti menapis, menambah cap masa atau menghantar log ke destinasi yang berbeza. Sebagai contoh, yang berikut menunjukkan kes praktikal corak penghias menggunakan rangka kerja Log4j:

import org.apache.log4j.Logger;
import org.apache.log4j.Layout;
import org.apache.log4j.Appender;
import org.apache.log4j.varia.LevelMatchFilter;

public class MyLoggingAppender extends AppenderSkeleton {

    private Appender appender;

    public MyLoggingAppender(Layout layout, Appender appender) {
        super(layout);
        this.appender = appender;
    }

    @Override
    public void close() {
        appender.close();
    }

    @Override
    public boolean requiresLayout() {
        return false;
    }

    @Override
    protected void append(LoggingEvent event) {
        if (LevelMatchFilter()) {
            appender.doappend(new LoggingEvent(event.getLoggerName(), event.getLevel(), event.getMessage(), event.getThreadName(), event.getTimeStamp(), event.getLocationInfo(), event.getThrowableInformation(), event.getNDC(), event.getMDCCopy()));
        }
    }
}

Dalam kes ini, kelas MyLoggingAppender ialah penghias yang memanjangkan kelas Appender dengan menambahkan fungsi penapisan. Ia menghantar peristiwa log ke Appender asal, tetapi hanya jika peristiwa log sepadan dengan penapis yang ditentukan.

Ringkasnya, dengan menggunakan corak penghias, anda boleh memanjangkan kefungsian objek Java tanpa mengubah suai kelas asal, dengan itu meningkatkan kebolehskalaan dan fleksibiliti kod.

Atas ialah kandungan terperinci Apakah kaedah pelaksanaan corak penghias dalam rangka kerja java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn