الگوی ناظر

الگوی ناظر یک الگوی طراحی نرم‌افزار است که در آن یک شی به نام موضوع، فهرست وابستگی‌هایش را با نام ناظران نگه می‌دارد و هرگونه تغییر در وضعیتش را به‌طور خودکار و معمولاً با صدا کردن یکی از روش‌های آن به اطلاع آن اشیا می‌رساند.

این الگو معمولاً برای پیاده‌سازی سامانه‌های توزیع‌شدهٔ رسیدگی به رویداد در نرم‌افزارهای «رویداد محور» استفاده می‌شود. اکثر زبان‌های مدرن مانند C# سازندگان درونی‌شده «رویداد» را دارند که الگوی ناظر را پیاده‌سازی می‌کند تا برنامه‌نویسی آسان و کد کوتاه شود.

در این الگوی اشیای ناظر (observer) نزد اشیای subject ثبت‌نام (register) می‌کنند. در ادامه شئ subject پس از هر تغییر تمام observer ها خود را مطلع می‌کند.

الگوی ناظر همچنین بخش مهمی در الگوی معماری مدل-نما-کنترل‌گر (MVC) دارد.[۱] الگوی ناظر در بسیاری از کتابخانه‌های و سامانه‌های برنامه‌نویسی و تقریباً تمام تول‌کیت‌های GUI پیاده‌سازی شده‌است.

دیاگرام کلاس

UML class diagram ناظر الگوی

مثال در دنیای واقعی

وقتی در یک خبرنامه اشتراک می‌گیریم، به ازای هر بار انتشار آن به صورت آنلاین یا فیزیکی خبرنامه جدید را دریافت می‌کنیم. در اینجا ما به عنوان اشتراک‌گیرنده و شرکت‌ مدیریت‌کننده مجله به عنوان اشتراک‌دهنده عمل می‌کند.

مثال

مثال در پایتون:

class Observable:
    def __init__(self):
        self.__observers = []

    def register_observer(self, observer):
        self.__observers.append(observer)

    def notify_observers(self, *args, **kwargs):
        for observer in self.__observers:
            observer.notify(self, *args, **kwargs)

class Observer:
    def __init__(self, observable):
        observable.register_observer(self)

    def notify(self, observable, *args, **kwargs):
        print('Got', args, kwargs, 'From', observable)

subject = Observable()
observer = Observer(subject)
subject.notify_observers('test')


مثال در جاوا:

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

class EventSource {
    public interface Observer {
        void update(String event);
    }
  
    private final List<Observer> observers = new ArrayList<>();
  
    private void notifyObservers(String event) {
        observers.forEach(observer -> observer.update(event)); //alternative lambda expression: observers.forEach(Observer::update);
    }
  
    public void addObserver(Observer observer) {
        observers.add(observer);
    }
  
    public void scanSystemIn() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            notifyObservers(line);
        }
    }
}
public class ObserverDemo {
    public static void main(String[] args) {
        System.out.println("Enter Text: ");
        EventSource eventSource = new EventSource();
        
        eventSource.addObserver(event -> {
            System.out.println("Received response: " + event);
        });

        eventSource.scanSystemIn();
    }
}

جستارهای وابسته

منابع

  1. "Model-View-Controller". MSDN. Retrieved 2015-04-21.

Read other articles:

Prison ArchitectInformasi produksiPengembangIntroversion Software (2015−19)Double Eleven (2019−)PenerbitIntroversion Software (2015−2019)Paradox Interactive (versi tablet)Double Eleven (versi konsol)Paradox Interactive (2019−)ProduserMark MorrisPerancangChris Delay Data permainanPlatformMicrosoft Windows, MacOS, Linux, PlayStation 4, Xbox 360, Xbox One, iOS, Android, Nintendo SwitchGenreSimulasi konstruksi dan manajemenModePemain tunggal, multipemain PerilisanTanggal rilis 6 Oktober 2...

 

Species of grass Blue grama Conservation status Secure (NatureServe)[1] Scientific classification Kingdom: Plantae Clade: Tracheophytes Clade: Angiosperms Clade: Monocots Clade: Commelinids Order: Poales Family: Poaceae Genus: Bouteloua Species: B. gracilis Binomial name Bouteloua gracilis(Willd. ex Kunth) Lag. ex Griffiths[2][3] Bouteloua gracilis, the blue grama, is a long-lived, warm-season (C4) perennial grass, native to North America.[2][4 ...

 

Hit & RunPoster filmSutradara Ody C. Harahap Produser Sukhdev Singh Wicky V. Olindo Ditulis oleh Upi Fajar Putra S. Pemeran Joe Taslim Chandra Liow Jefri Nichol Tatjana Saphira Reza Aditya Qausar Harta Yudana Yayan Ruhian Nadya Arina Penata musik Aria Prayogi Fajar Yuskemal SinematograferPadri NadeakPenyuntingAline JusriaPerusahaanproduksi Screenplay Films Legacy Pictures Bukalapak Pictures Nimpuna Sinema CJ Entertainment Tanggal rilis 4 Juni 2019 (2019-06-04) (Indonesia) D...

منتخب مالي لكرة القدم للسيدات بلد الرياضة مالي  الفئة كرة القدم للسيدات  رمز الفيفا MLI  مراتب تصنيف الفيفا 82 ▼ 1 (25 أغسطس 2023)[1] مشاركات تعديل مصدري - تعديل   منتخب مالي الوطني لكرة القدم للسيدات (بالفرنسية: Équipe du Mali féminine de football)‏ هو ممثل مالي الرسمي في المنافسات ...

 

Lažany Lažany (Skuteč) (Tschechien) Basisdaten Staat: Tschechien Tschechien Region: Pardubický kraj Bezirk: Chrudim Gemeinde: Skuteč Fläche: 179[1] ha Geographische Lage: 49° 50′ N, 16° 1′ O49.836513316.0177153440Koordinaten: 49° 50′ 11″ N, 16° 1′ 4″ O Höhe: 440 m n.m. Einwohner: 106 (2011) Postleitzahl: 539 74 Kfz-Kennzeichen: E Verkehr Straße: Skuteč – Předhradí Bahnanschluss: Svitavy–Ž...

 

House close to the pergola (ul. Tramwajowa 2). As of 2018 it has been refurbished as an info centre and café called INFOWUWA, and is a vibrant meeting place for local Wroclawians. WUWA map (in Polish) One of the WUWA buildings, Zielonego Dębu street WUWA (German: Wohnungs- und Werkraumausstellung, Workplace and House Exhibition) was a building exhibition held in Breslau, Weimar Republic (today Wroclaw, Poland) in 1929. Organized by the Silesian committee of the Deutsche Werkbund, close to t...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (مارس 2019) كورنيليس   معلومات شخصية الميلاد 27 يوليو 1953 (70 سنة)[1]  سانغاو  مواطنة إندونيسيا  الديانة كاثوليكية[2]  عدد الأولاد 2 [3]  [4]   في ...

 

Appointed head of state of the provincial government in Punjab, Pakistan This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Governor of Punjab, Pakistan – news · newspapers · books · scholar · JSTOR (June 2014) (Learn how and when to remove this template message) Governor of PunjabIncumbentMuhammad Baligh Ur Re...

 

1977 killing of soldiers in the Philippines Patikul massacrePart of the Moro conflictMemorial to AFP Brig. Gen. Teodulfo Bautista and his 35 men who were killed in Danag, Patikul, SuluDateOctober 10, 1977LocationPatikul, Sulu, Philippines6°03′47″N 121°06′08″E / 6.0630°N 121.1023°E / 6.0630; 121.1023Result MNLF victoryBelligerents Philippine Army Moro National Liberation FrontCommanders and leaders Teodulfo Bautista † Usman Sali[1]Units in...

Filipino politician (1949-2022) The HonorableMarisol PanotesOfficial portrait of Panotes during the 18th CongressMember of the Philippine House of Representatives from Camarines Norte's 2nd DistrictIn officeJune 30, 2016 – April 29, 2022Preceded byElmer PanotesSucceeded byRosemarie Panotes Personal detailsBorn(1946-01-20)January 20, 1946Daet, Camarines Norte, PhilippinesDiedApril 29, 2022(2022-04-29) (aged 76)Camarines Norte, PhilippinesPolitical partyPDP–LabanSpouse Elmer P...

 

Mexican boxer In this Spanish name, the first or paternal surname is Rivera and the second or maternal family name is Yucupicio. Cosme RiveraBorn (1976-07-19) 19 July 1976 (age 47)Huatabampo, Sonora, MexicoNationalityMexicanOther namesChinoStatisticsWeight(s)Light welterweightWelterweightStanceOrthodox Boxing recordTotal fights84Wins43Wins by KO28Losses37Draws3No contests1 Cosme Rivera Yucupicio (born 19 July 1976) is a Mexican professional boxer. He held the WBO–NABO ligh...

 

2 Fast 2 Furious2 Fast 2 Furious film posterSutradara John Singleton Produser Lee Mayes Neal H. Moritz Ditulis oleh Michael Brandt Derek Haas PemeranPaul WalkerTyrese GibsonEva MendesCole HauserJames RemarChris 'Ludacris' BridgesDevon AokiDistributorUniversal PicturesTanggal rilis 6 Juni 2003 23 Agustus 2003Durasi101 menitNegara Amerika Serikat JepangBahasa Inggris Spanyol Anggaran~ US$76,000,000PrekuelThe Fast and the FuriousSekuelThe Fast and the Furious: Tokyo DriftIMDbInformasi di IMDbAMG...

Region in Iran This article is about the region. For other uses, see Alamut (disambiguation). Alamut geographic region in Iran Part of a series on IslamIsma'ilism Concepts Quran Taʾwīl Imamate Ẓāhir Bātin Nūr 'Aql ʿIlm Daʿwa Dāʿī Bāb Hujja Satr Taqiya Pīr Numerology Panentheism Reincarnation Titles Seven Pillars Walayah Purity Prayer Charity Fasting Pilgrimage Musta'li and Nizari historyBranches/sects Sevener Qarmatians Nizari Assassins Musta'li Tayyibi Dawoodi Bohras Hebtiahs A...

 

This biography of a living person relies too much on references to primary sources. Please help by adding secondary or tertiary sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately, especially if potentially libelous or harmful.Find sources: Ben Saul – news · newspapers · books · scholar · JSTOR (April 2014) (Learn how and when to remove this template message) Ben Saul FASSA is the current C...

 

South Korean actor In this Korean name, the family name is Choi. In the stage name or pen-name, the surname is Choi. Choi Sung-wonChoi in March 2016BornChoi Min-woo (1985-01-17) January 17, 1985 (age 38)South KoreaOccupationActorYears active2011-presentAgentWide S Company (2022-present) Korean nameHangul최성원Revised RomanizationChoe Seong-wonMcCune–ReischauerCh'oe Sŏng'wŏnBirth nameHangul최민우Revised RomanizationChoe Min-uMcCune–ReischauerCh'oe Min-u Choi Min-woo (born...

This article is written like a personal reflection, personal essay, or argumentative essay that states a Wikipedia editor's personal feelings or presents an original argument about a topic. Please help improve it by rewriting it in an encyclopedic style. (January 2009) (Learn how and when to remove this template message) There is many different ethnic groups present in Russia and the countries of the former Soviet Union today. This diversity has been the source or instigator of conflict for c...

 

Candi SawentarCandi SawentarLocation within IndonesiaInformasi umumGaya arsitekturCandiKotaDesa Sawentar, Kecamatan Kanigoro Kabupaten BlitarNegara IndonesiaData teknisSistem strukturPiramida berundak dari susunan blok batu andesit yang saling mengunciUkuranLuas dasar 9,53 X 6,86 meter, tinggi 10,65 meter Candi Sawentar terletak di Desa Sawentar. Desa ini secara administratif masuk wilayah Kecamatan Kanigoro, Kabupaten Blitar. Sejalan dengan adanya sistem pemerintahan otonomi daerah, seg...

 

Pair of telescopes mounted side-by-side 8×42 roof prism binoculars with rainguard and opened tethered lens caps Binoculars or field glasses are two refracting telescopes mounted side-by-side and aligned to point in the same direction, allowing the viewer to use both eyes (binocular vision) when viewing distant objects. Most binoculars are sized to be held using both hands, although sizes vary widely from opera glasses to large pedestal-mounted military models. Unlike a (monocular) telescope,...

萊陽龍屬化石时期:白堊紀晚期, 73 Ma PreЄ Є O S D C P T J K Pg N ▼ 頭部特寫 科学分类 界: 动物界 Animalia 门: 脊索动物门 Chordata 纲: 蜥形纲 Sauropsida 总目: 恐龍總目 Dinosauria 目: †鸟臀目 Ornithischia 亚目: †鸟脚亚目 Ornithopoda 科: †鴨嘴龍科 Hadrosauridae 亚科: †栉龙亚科 Saurolophinae 族: †埃德蒙顿龙族 Edmontosaurini 属: †萊陽龍屬 LaiyangosaurusZhang et al., 2017 模式種...

 

Incontro di Anna e Gioacchino alla Porta d'OroAutoreGiotto Data1303-1305 circa Tecnicaaffresco Dimensioni200×185 cm UbicazioneCappella degli Scrovegni, Padova L'Incontro di Anna e Gioacchino alla Porta d'Oro è un affresco (200x185 cm) di Giotto, databile al 1303-1305 circa e facente parte del ciclo della Cappella degli Scrovegni a Padova. È l'ultimo delle Storie di Gioacchino e Anna nel registro più alto della parete destra, guardando verso l'altare, e raffigura l'incontro alla Porta...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!