C 程式設計模式1 觀察者模式

2021-07-26 22:19:08 字數 1929 閱讀 2316

觀察者模式用於實現以下功能,有乙個觀察者類用以發布資訊,其他類繼承這個觀察者類,只訂閱自己想要操作的資訊。

本例中,gateservice.h,gatesevice.cpp檔案用以實現觀察者類。dlglogin.h,dlglogin.cpp檔案用以實現訂閱資訊的類。

具體實現如下:

檔案

#pragma once

class igateserverrpc

; //觀察模式:獲取訊息

};typedef

std::list

observerlist;

typedef

std::list

::iterator observerlistiter;

class cgateservice

;

檔案

#include "stdafx.h"

#include "gateservice.h"

cgateservice::cgateservice()

cgateservice::~cgateservice()

void cgateservice::addobserver(igateserverrpc * pobserver)

}}void cgateservice::delobserver(igateserverrpc *pobserver)

}}void cgateservice::pulldata()}}

}

檔案

#pragma once

#include "stdafx.h"

#include "gateservice.h"

//登入視窗

class cdlglogin

: public windowimplbasebase

, public igateserverrpc

;

// dlglogin.cpp檔案

#include "stdafx.h"

#include "dlglogin.h"

#include "resource.h"

using namespace std;

cdlglogin::cdlglogin()

: m_pbtnlogin(null)

, m_pedtusername(null)

, m_pedtpwd(null)

, m_strusername(_t(""))

, m_strpassword(_t(""))

, m_pgateservice(null)

cdlglogin::~cdlglogin()

}lpctstr cdlglogin::getwindowclassname() const

cstdstring cdlglogin::getskinfile()

cstdstring cdlglogin::getskinfolder()

void cdlglogin::init()

int cdlglogin::createagreementdlg()

void cdlglogin::ongetmsg(cstring content)

void cdlglogin::notify(tnotifyui& msg)

}}lresult cdlglogin::handlemessage(uint umsg, wparam wparam, lparam lparam)

bool cdlglogin::loginitialcheck(cstring &username, cstring &pwd)

else

if (pwd == _t(""))

return

true;

}

1 觀察者模式總結 C

觀察者模式 定義了一種 一對多 的依賴關係,讓多個觀察者物件同時監聽乙個物件的改變,即當該物件的狀態發現改變時,會通知所有它依賴的觀察者物件。觀察者模式屬於行為模式。意圖 定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。主要解決 通知其他物件有...

C 觀察者模式

觀察者模式 有時被稱作發布 訂閱模式,觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。作用 在大的專案中,當乙個物件的狀態發生改變時可以通知其他相關的物件,這就可以用到觀察者模式。用以將多種物件...

觀察者模式C

當物件間存在一對多的關係,當狀態改變時,其他物件都得到通知,這就是觀察者模式了。觀察者模式實現發布 訂閱功能。如我們有個專案叫ngi,需要召開stanup會議,會議上需求變更時需要通過所有參加會議的人員,我們就可以使用觀察者模式,其uml圖如下 其 實現如下 include include incl...