⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 C++ Source code from a tutorial
💻 CPP
字号:
#include <iostream>
#include <stdlib.h>
#include <string>

using namespace std;

class Observer {
public:
    virtual void Respond() = 0;
};

class Dog : public Observer {
public:
    void Respond();
};

class Police : public Observer {
protected:
    string name;
public:
    Police(string myname) { name = myname; }
    void Respond();
};

void Dog::Respond() {
    cout << "Bark bark" << endl;
}

void Police::Respond() {
    cout << name << ": 'Drop the weapon! Now!'" << endl;
}

class Subject {
protected:
    int Count;
    Observer *List[100];
public:
    Subject() { Count = 0; }
    void AddObserver(Observer *Item);
    void RemoveObserver(Observer *Item);
    void Event();
};

void Subject::AddObserver(Observer *Item) {
    List[Count] = Item;
    Count++;
}

void Subject::RemoveObserver(Observer *Item) {
    int i;
    bool found = false;
    for (i=0; i < Count; i++) {
        if (found) {
        }
        else if (List[i] == Item) {
            found = true;
            List[i] = List[i+1];
        }
    }
    if (found) {
        Count--;
    }
}

void Subject::Event() {
    int i;
    for (i=0; i < Count; i++) {
        List[i]->Respond();
    }
}

int main(int argc, char *argv[])
{
    Dog Fido;
    Police TJHooker("TJ");
    Police JoeFriday("Joe");
    
    Subject Alarm;
    Alarm.AddObserver(&Fido);
    Alarm.AddObserver(&TJHooker);
    Alarm.AddObserver(&JoeFriday);
    Alarm.RemoveObserver(&TJHooker);
    Alarm.Event();
    
    system("PAUSE");	
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -