这里感觉用不用观察者模式没啥区别啊。
老六既然能提供短信接口,也能提供邮件接口等。那就让老六只提供一个通知接口,然后小慕就调用这个接口不就行了吗?
void UserWallet::consume(float p)
{
balance -= p;
// 调用老六提供的通知接口,老六自己在接口里面用短信或者邮件即可。
}
比如下面代码,岂不是更干净吗?(让老六自己去在SendMessage函数中实现发邮件,打电话,发短信等)
#include <iostream>
class Notifier {
public:
void SendMessage(double money_left) {
std::cout << "send a message to a user:money_left=" << money_left << std::endl;
}
};
class Wallet {
public:
void consume(double money) {
money_left_ -= money;
notifier_.SendMessage(money_left_);
}
private:
Notifier notifier_;
private:
double money_left_ = 100.0;
};
/*
程序运行结果:
send a message to a user:money_left=95
*/
int main() {
Wallet wallet;
wallet.consume(5);
getchar();
return 0;
}
(视频中代码只演示了使用观察者之后的代码,没有演示使用观察者之前的代码,没有理解二者区别在哪里)
观察者解决的本质问题是什么啊?