成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

設(shè)計(jì)模式系列之觀察者模式

Edison / 1030人閱讀

本文從jdk內(nèi)置的觀察者模式來(lái)介紹觀察者模式。
業(yè)務(wù)場(chǎng)景:當(dāng)老師進(jìn)門(mén)的時(shí)候,班長(zhǎng)帶頭叫“老師好”,然后全班同學(xué)一起交“老師好”
因?yàn)樘?jiǎn)單,直接上代碼

班長(zhǎng)繼承自O(shè)bservable

package Observer;

import java.util.Observable;
import java.util.Observer;

public class Monitor extends Observable{
    public Monitor() {
        super();
    }

    @Override
    public synchronized void addObserver(Observer o) {
        super.addObserver(o);
    }

    @Override
    public synchronized void deleteObserver(Observer o) {
        super.deleteObserver(o);
    }

    @Override
    public void notifyObservers() {
        super.notifyObservers();
    }

    @Override
    public void notifyObservers(Object arg) {
        super.notifyObservers(arg);
    }

    @Override
    public synchronized void deleteObservers() {
        super.deleteObservers();
    }

    @Override
    protected synchronized void setChanged() {
        super.setChanged();
    }

    @Override
    protected synchronized void clearChanged() {
        super.clearChanged();
    }

    @Override
    public synchronized boolean hasChanged() {
        return super.hasChanged();
    }

    @Override
    public synchronized int countObservers() {
        return super.countObservers();
    }
}

學(xué)生繼承自O(shè)bserver

package Observer;

import java.util.Observable;
import java.util.Observer;

/**
 * 觀察者
 */
public class Student implements Observer{
    String name;

    public Student() {
    }
    public Student(String name) {
        this.name = name;
    }

    @Override
    public void update(Observable o, Object arg) {
        System.out.println("學(xué)生" + this.name + "說(shuō)老師好");
    }
}

測(cè)試類:

package Observer;

public class Maintest {

    public static void main(String[] args) {
        Monitor monitor = new Monitor();

        Student student1 = new Student("小明");
        monitor.addObserver(student1);

        Student student2 = new Student("小藍(lán)");
        monitor.addObserver(student2);

        Student student3 = new Student("小白");
        monitor.addObserver(student3);

        // 只有設(shè)置了這個(gè)值才進(jìn)行通知
        monitor.setChanged();
        // 班長(zhǎng)通知所有學(xué)生老師來(lái)了,起立
        monitor.notifyObservers();
    }
}

結(jié)果:

學(xué)生小白說(shuō)老師好
學(xué)生小藍(lán)說(shuō)老師好
學(xué)生小明說(shuō)老師好

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/75027.html

相關(guān)文章

  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    Dionysus_go 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    vspiders 評(píng)論0 收藏0
  • JS設(shè)計(jì)模式Obeserver(察者模式、Publish/Subscribe(發(fā)布/訂閱)模式

    摘要:觀察者模式定義設(shè)計(jì)模式中對(duì)的定義一個(gè)對(duì)象稱為維持一系列依賴于它觀察者的對(duì)象,將有關(guān)狀態(tài)的任何變更自動(dòng)通知給它們。如圖模式比較觀察者模式則多了一個(gè)類似于話題調(diào)度中心的流程,發(fā)布者和訂閱者解耦。 Obeserver(觀察者)模式 定義 《js設(shè)計(jì)模式》中對(duì)Observer的定義:一個(gè)對(duì)象(稱為subject)維持一系列依賴于它(觀察者)的對(duì)象,將有關(guān)狀態(tài)的任何變更自動(dòng)通知給它們。 《設(shè)計(jì)模...

    荊兆峰 評(píng)論0 收藏0
  • js設(shè)計(jì)模式察者模式和發(fā)布/訂閱模式

    摘要:添加獲取長(zhǎng)度獲取下標(biāo)通知首先我們聲明一個(gè)主體類,里面包含一個(gè)觀察者數(shù)組,還有一些操作方法。觀察者通用聲明一個(gè)更新接口,用來(lái)獲取主體分發(fā)的通知。主體分發(fā)消息給觀察者。 觀察者模式 The Observer is a design pattern where an object (known as a subject) maintains a list of objects dependi...

    HitenDev 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<