// CuSocketFile - A CuFile object used for sending and receiving data across a network via Windows Sockets.
CuSocket sk;
CuSocketFile skFile(&sk);
CuFile *pFile = &skFile;
pFile->Write(...);
pFile->Read(...);
// CuSocketFile.h
class CuSocketFile : public CuFile
{
CuSocket* m_pSocket;
public:
CuSocketFile( CuSocket* pSocket);
~CuSocketFile();
public:
virtual int Write(const void* lpBuf, UINT nCount);
virtual int Read(void* lpBuf, UINT nCount);
};
// CuSocketFile.cpp
CuSocketFile::~CuSocketFile()
{
}
CuSocketFile::CuSocketFile(CuSocket *pSocket)
{
m_pSocket = pSocket;
}
// rc == SOCKET_ERROR 在外部在處理
int CuSocketFile::Read(void *lpBuf, UINT nCount)
{
if( lpBuf == NULL )
return 0;
return m_pSocket->Receive(lpBuf, nCount, 0);
}
int CuSocketFile::Write(const void *lpBuf, UINT nCount)
{
if( lpBuf == NULL )
return 0;
retrun m_pSocket->Send((const TCHAR*)lpBuf , nCount, 0);
}
使用繼承 public CuFile , 在對TheApp做多型, TheApp並不需要知道是LocalFile 還是 Remote Socket.這裡有個很特別的問題, CuFile 跟 CuSocketFile 除了介面相同外, 並沒有任何的程式碼相容.
因此需要繼承的並不是CuFile實體, 而是
class CuFile : public IuFile
class CuSocketFile : public IuFile
繼承 CuFile 的介面 IuFile
沒有留言:
張貼留言