2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Observer इति प्रतिमानं Publish/Subscribe इति प्रतिमानं अपि ज्ञायते । GOF पर्यवेक्षकप्रतिमानं निम्नलिखितरूपेण परिभाषयति: वस्तुनां मध्ये एक-बहु-निर्भरता-सम्बन्धं परिभाषयति, येन बहुविध-पर्यवेक्षक-वस्तूनाम् एकस्मिन् समये एकस्मिन् वस्तुनि केन्द्रीक्रियते यदा वस्तुनः स्थितिः परिवर्तते तदा तस्मिन् आश्रिताः सर्वे वस्तुनः प्राप्नुवन्ति स्वयमेव सूचितं अद्यतनं च भवति।
यथा अधोलिखिते चित्रे दर्शितं, प्रेक्षकप्रतिरूपे ५ प्रकाराः वस्तूनि सन्ति ।
विशिष्टं कार्यान्वयनम् पश्यामः ।
(1) Observer interface Observer.java एकं एकीकृतं अद्यतनं अन्तरफलकं update() परिभाषयति । अस्य स्रोतसङ्केतः निम्नलिखितकार्यक्रमे दर्शितः अस्ति ।
package behavior.observer;
/**
* @author Minggg
* 观察者接口
*/
public interface Observer {
public void update();
}
(2) पर्यवेक्षक कार्यान्वयनवर्गः Observer1.java पर्यवेक्षकस्य विशिष्टं कार्यान्वयनम् अस्ति, तस्य अद्यतनकार्यं च कन्सोल् मध्ये स्ट्रिंग् आउटपुट् कर्तुं उपयुज्यते । अस्य स्रोतसङ्केतः निम्नलिखितकार्यक्रमे दर्शितः अस्ति ।
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer1 implements Observer {
public void update(){
System.out.println("观察者1得到通知!");
}
}
(3) पर्यवेक्षक कार्यान्वयनवर्गः Observer2.java अन्यस्य पर्यवेक्षकस्य विशिष्टं कार्यान्वयनम् अस्ति, तस्य अद्यतनकार्यं च कन्सोल् मध्ये स्ट्रिंग् आउटपुट् कर्तुं उपयुज्यते । अस्य स्रोतसङ्केतः निम्नलिखितकार्यक्रमे दर्शितः अस्ति ।
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer2 implements Observer {
public void update(){
System.out.println("观察者2得到通知!");
}
}
(4) अवलोकितं अन्तरफलकं Subject.java संचालनपर्यवेक्षकाणां कृते त्रीणि अन्तरफलककार्यं परिभाषयति, तथा च स्वस्य कार्याणां प्रतिनिधित्वार्थं विशिष्टं संचालनकार्यान्तरफलकं परिभाषयति अस्य स्रोतसङ्केतः निम्नलिखितकार्यक्रमे दर्शितः अस्ति ।
package behavior.observer;
/**
* @author Minggg
* 被观察者接口
*/
public interface Subject {
// 增加观察者
public void attach(Observer observer);
// 删除观察者
public void detach(Observer observer);
// 通知所有观察者
public void notifyObservers();
// 自身的操作接口
public void operation();
}
(5) अवलोकितः अमूर्तवर्गः AbstractSubject.java सर्वेषां पर्यवेक्षकवस्तूनाम् रक्षणार्थं Vector list vect प्रदाति, तथा च सूचीवस्तूनाम् संचालनार्थं कार्यान्वयनकार्यं लिखति अस्य स्रोतसङ्केतः निम्नलिखितकार्यक्रमे दर्शितः अस्ति ।
package behavior.observer;
import java.util.Enumeration;
import java.util.Vector;
/**
* @author Minggg
* 被观察者抽象类
*/
public abstract class AbstractSubject implements Subject {
private Vector