其实这玩意真的简单,但是网上资料都看不明白,如果新手在工作中遇到了这种设计模式的软件,直接问源代码作者吧,他随便讲几句话就明白了。百度上的资料都是抄来吵去,辣鸡。而且代码又臭又长,根本看不懂,本文也很可能看不懂。
正文:在我的实际工程中挑选了关键代码出来,来分析串口这一块。
首先定义中断类包括串口,然后串口的中断来的时候,串口中断观察者-IInterruptObserver收到一个字节,同时把它发送给它的”上级“观察者-IUartObserver,只是它没有告诉IUartObserver做什么,让IUartObserver自己写一个成员函数来处理,同时,IUartObserver可以有不同的派生类,派生类的对象可以做自己想做的事情。
/*************************
类定义:中断
**************************/
class CInterrupt
{
private:
IInterruptObserver* IsrObsever[5];
public:
static CInterrupt* Instance();
void RegisterObsever(ISRn_Type type,IInterruptObserver* observers)
{
IsrObsever[type]=observer;
}
void IRQHandler(ISRn_Type type)
{
if(IsrObsever[type])
类定义:中断
**************************/
class CInterrupt
{
private:
IInterruptObserver* IsrObsever[5];
public:
static CInterrupt* Instance();
void RegisterObsever(ISRn_Type type,IInterruptObserver* observers)
{
IsrObsever[type]=observer;
}
void IRQHandler(ISRn_Type type)
{
if(IsrObsever[type])