2011-07-07 49 views
0

在我的程序中,我有一个窗口,用户在刷卡时刷新信息。该窗口将一直等到信用卡被刷或发生任何其他错误。目前,等待窗口在内部创建读卡器类,并使用读卡器类的委派/回叫方法来知道卡上的数据何时可用或发生任何其他错误。从信用卡读卡器解耦信用卡等待窗口

由于有4-5种类型的读者可用,我正在实施CardReader的策略模式。

我还想从窗口代码中分离CardReader创建/实例代码。你能否提供一些相同的建议?

我会在设计CardReader的策略模式类之前阅读您的意见。

感谢

+0

工作的读取器类你不是在寻找工厂模式吗? – CodingBarfield

回答

1

利用等待窗口的构造函数需要对类读者参考,注册一个OnCardReadEvent等待窗口。当收到事件时,调用reader类中的函数进行检查,如果需要继续显示等待窗口或关闭它。在OnCardReadEvent窗口关闭取消注册

如果您没有OnCardReadEvent然后创建一个。

内部时读做做这样的事情,使多个窗口,从一个单一的阅读器接收数据

DCardArrived _evnt = OnCardArrived; /*presumably declared event*/ 
     Delegate[] _iList; 
     DCardArrived _Invoker; 
     if (_evnt != null) 
     { 
      _iList = _evnt.GetInvocationList(); 
      for (int i = 0; i < _iList.Length; i++) 
      { 
        //You could also use BeginInvoke 
       _Invoker = (DCardArrived)_iList[i]; 
       _Invoker.Invoke(this/*Sender*/,CardData/*class that inherits EventArgs containing the data either informing just the window to close or not or with the data for further processing*/); 
      } 
     } 

你还没有给我们太多与:)