Rumah >Java >javaTutorial >Tingkatkan kemahiran pengaturcaraan Java: kuasai pelaksanaan corak penyesuai dan corak pemerhati

Tingkatkan kemahiran pengaturcaraan Java: kuasai pelaksanaan corak penyesuai dan corak pemerhati

PHPz
PHPzasal
2023-12-23 11:52:22862semak imbas

Tingkatkan kemahiran pengaturcaraan Java: kuasai pelaksanaan corak penyesuai dan corak pemerhati

Meningkatkan kemahiran pengaturcaraan Java: Menguasai pelaksanaan corak penyesuai dan corak pemerhati memerlukan contoh kod khusus

Pengenalan:
Dalam pembangunan perisian harian, kita sering perlu menangani isu keserasian antara kelas yang berbeza juga perlu dilaksanakan pemantauan acara dan pemprosesan pelbagai antara muka pengguna. Corak penyesuai dan Corak Pemerhati ialah dua corak reka bentuk yang biasa digunakan yang boleh menyelesaikan masalah ini dengan berkesan. Artikel ini akan memperkenalkan pelaksanaan corak penyesuai dan corak pemerhati secara terperinci, dan menyediakan contoh kod Java khusus untuk membantu pembaca memahami dengan lebih baik.
1. Cara melaksanakan corak penyesuai:
Corak penyesuai ialah corak reka bentuk struktur yang membolehkan kelas sedia ada berfungsi bersama-sama dengan kelas yang tidak serasi. Corak Penyesuai mengubah antara muka supaya ia boleh digunakan oleh pelanggan dengan mencipta kelas penyesuai perantaraan. Berikut ialah contoh corak penyesuai mudah:

// 目标接口
interface MediaPlayer {
    void play(String audioType, String fileName);
}

// 被适配的类
class Mp3Player {
    public void playMp3(String fileName) {
        System.out.println("Playing mp3 file: " + fileName);
    }
}

// 适配器类
class MediaAdapter implements MediaPlayer {
    private Mp3Player mp3Player;

    public MediaAdapter() {
        mp3Player = new Mp3Player();
    }

    @Override
    public void play(String audioType, String fileName) {
        if (audioType.equalsIgnoreCase("mp3")) {
            mp3Player.playMp3(fileName);
        }
    }
}

// 客户端代码
public class AudioPlayer implements MediaPlayer {
    private MediaAdapter mediaAdapter;

    @Override
    public void play(String audioType, String fileName) {
        if (audioType.equalsIgnoreCase("mp3")) {
            System.out.println("Playing mp3 file: " + fileName);
        } else if (audioType.equalsIgnoreCase("vlc")
                || audioType.equalsIgnoreCase("mp4")) {
            mediaAdapter = new MediaAdapter();
            mediaAdapter.play(audioType, fileName);
        } else {
            System.out.println("Invalid media type: " + audioType);
        }
    }

    public static void main(String[] args) {
        AudioPlayer audioPlayer = new AudioPlayer();
        audioPlayer.play("mp3", "music.mp3");
        audioPlayer.play("vlc", "video.vlc");
        audioPlayer.play("mp4", "video.mp4");
    }
}

Dalam contoh di atas, kami mempunyai antara muka sasaran MediaPlayer dan Mp3Player kelas yang disesuaikan. Untuk menjadikan Mp3Player serasi dengan antara muka MediaPlayer, kami mencipta kelas penyesuai MediaAdapter, yang melaksanakan antara muka MediaPlayer dan memajukan permintaan panggilan ke kelas Mp3Player. Dengan cara ini, kod pelanggan boleh mengendalikan pelbagai jenis fail media melalui antara muka MediaPlayer.

2 Apabila objek berubah, semua pemerhati dimaklumkan bahawa objek itu dikemas kini. Berikut ialah contoh corak Pemerhati yang mudah:

import java.util.ArrayList;
import java.util.List;

// 主题接口
interface Subject {
    void registerObserver(Observer observer);
    void unregisterObserver(Observer observer);
    void notifyObservers();
}

// 观察者接口
interface Observer {
    void update(String message);
}

// 具体主题类
class WeatherStation implements Subject {
    private List<Observer> observers;
    private String weather;

    public WeatherStation() {
        observers = new ArrayList<>();
    }

    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void unregisterObserver(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update(weather);
        }
    }

    public void setWeather(String weather) {
        this.weather = weather;
        notifyObservers();
    }
}

// 具体观察者类
class WeatherDisplay implements Observer {
    private String latestWeather;

    @Override
    public void update(String message) {
        latestWeather = message;
        display();
    }

    private void display() {
        System.out.println("Latest weather: " + latestWeather);
    }
}

// 客户端代码
public class ObserverPatternExample {
    public static void main(String[] args) {
        WeatherStation weatherStation = new WeatherStation();

        WeatherDisplay weatherDisplay1 = new WeatherDisplay();
        WeatherDisplay weatherDisplay2 = new WeatherDisplay();

        weatherStation.registerObserver(weatherDisplay1);
        weatherStation.registerObserver(weatherDisplay2);

        weatherStation.setWeather("Sunny");
        weatherStation.setWeather("Cloudy");

        weatherStation.unregisterObserver(weatherDisplay2);

        weatherStation.setWeather("Rainy");
    }
}

Dalam contoh di atas, kami mempunyai antara muka topik Subjek dan kelas topik konkrit WeatherStation. Kami juga mempunyai antara muka pemerhati Pemerhati, dan kelas pemerhati WeatherDisplay tertentu. Apabila cuaca WeatherStation berubah, semua objek pemerhati berdaftar akan dimaklumkan melalui kaedah notifyObservers, dan objek pemerhati akan memanggil kaedah kemas kini untuk mengemas kini statusnya. Dengan cara ini, kami boleh melaksanakan berbilang pemerhati dengan mudah untuk memantau dan memberi respons kepada topik yang sama.

Ringkasan:

Menguasai pelaksanaan corak penyesuai dan corak pemerhati sangat membantu untuk meningkatkan kemahiran pengaturcaraan Java. Corak penyesuai boleh membantu kami menyelesaikan isu keserasian antara kelas yang berbeza, dan corak pemerhati boleh membantu kami melaksanakan mekanisme mendengar dan memproses peristiwa. Melalui contoh kod khusus, kita boleh lebih memahami pelaksanaan kedua-dua corak reka bentuk ini dan boleh menggunakannya secara fleksibel dalam pembangunan sebenar.

Atas ialah kandungan terperinci Tingkatkan kemahiran pengaturcaraan Java: kuasai pelaksanaan corak penyesuai dan corak pemerhati. 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