Rumah >Java >javaTutorial >Aplikasi antara muka dan kelas abstrak dalam corak reka bentuk di Jawa
Antara muka dan kelas abstrak digunakan dalam corak reka bentuk untuk penyahgandingan dan kebolehlanjutan. Antara muka mentakrifkan tandatangan kaedah, kelas abstrak menyediakan pelaksanaan separa, dan subkelas mesti melaksanakan kaedah yang tidak dilaksanakan. Dalam corak strategi, antara muka digunakan untuk menentukan algoritma, dan kelas abstrak atau kelas konkrit menyediakan pelaksanaan, membenarkan penukaran dinamik algoritma. Dalam corak pemerhati, antara muka digunakan untuk menentukan tingkah laku pemerhati, dan kelas abstrak atau konkrit digunakan untuk melanggan dan menerbitkan pemberitahuan. Dalam corak penyesuai, antara muka digunakan untuk menyesuaikan kelas yang sedia ada atau kelas konkrit boleh melaksanakan antara muka yang serasi, membenarkan interaksi dengan kod asal.
Aplikasi antara muka dan kelas abstrak dalam corak reka bentuk dalam Java
Dalam reka bentuk perisian, antara muka dan kelas abstrak adalah komponen utama untuk mencapai penyahgandingan dan kebolehskalaan. Mereka membenarkan modul yang berbeza dibangunkan dan digunakan secara bebas sambil mengekalkan keserasian.
Antaramuka
Kelas abstrak
Corak Pemerhati: Gunakan antara muka untuk menentukan tingkah laku pemerhati dan pelanggan. Kelas abstrak atau pelaksanaan konkrit boleh digunakan sebagai objek langganan, manakala pemerhati boleh mendaftar dan menyahdaftar untuk menerima kemas kini.
Corak Penyesuai:
Gunakan antara muka untuk menyesuaikan kelas sedia ada kepada antara muka yang berbeza. Kelas abstrak atau pelaksanaan konkrit boleh melaksanakan antara muka yang serasi, membolehkan mereka berinteraksi dengan kod warisan.Kes praktikal
Corak strategi:
interface SortingAlgorithm { int[] sort(int[] arr); } abstract class AbstractSortingAlgorithm implements SortingAlgorithm { public void swap(int[] arr, int i, int j) { // 交换 arr 中索引为 i 和 j 的元素 } } class BubbleSort extends AbstractSortingAlgorithm { @Override public int[] sort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { swap(arr, j, j + 1); } } } return arr; } } class QuickSort extends AbstractSortingAlgorithm { @Override public int[] sort(int[] arr) { // 快排算法实现 } } // 使用 SortingAlgorithm algorithm = new BubbleSort(); int[] sortedArr = algorithm.sort(arr);Dalam contoh ini, antara muka
SortingAlgorithm
mentakrifkan kelakuan pengisihan, manakala BubbleSort
dan Corak Pemerhati:
interface Observer { void update(Observable observable); } abstract class Observable { private List<Observer> observers = new ArrayList<>(); public void addObserver(Observer observer) { observers.add(observer); } public void removeObserver(Observer observer) { observers.remove(observer); } protected void notifyObservers() { for (Observer observer : observers) { observer.update(this); } } } class ConcreteObservable extends Observable { private int state; public void setState(int state) { this.state = state; notifyObservers(); } } class ObserverA implements Observer { @Override public void update(Observable observable) { // 收到通知并根据变化的 state 做出反应 } } // 使用 ConcreteObservable observable = new ConcreteObservable(); ObserverA observerA = new ObserverA(); observable.addObserver(observerA); observable.setState(10); // 通知观察者 state 发生变化Dalam contoh ini, antara muka
Observer
mentakrifkan kelakuan pemerhati, manakala kelas abstrak Observable
menyediakan mekanisme pemberitahuan langganan dan penerbitan. ConcreteObservable
dan ObserverA
ialah pelaksanaan konkrit, di mana ConcreteObservable
mengurus senarai pemerhati dan memberitahu mereka tentang perubahan keadaan, manakala ObserverA
boleh Mengambil tindakan berdasarkan perubahan ini. Atas ialah kandungan terperinci Aplikasi antara muka dan kelas abstrak dalam corak reka bentuk di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!