У меня есть класс с именем ResponseBuffer
, который читает и записывает в буфер.Я хочу скрыть этот класс и предоставить только API Read()
и Write()
другим классам.
Я планирую использовать для этой цели interface
.Я написал следующий пример кода MWE.
//*************************************************
//-----Response Buffer (Should be HIDDEN class)
//*************************************************
interface IResponseBuffer
{
void ReadResponseBuffer();
void WriteResponseBuffer(string message);
}
class ResponseBuffer : IResponseBuffer //HIDE THIS CLASS
{
private BlockingCollection<string> ResponseBuffer = new BlockingCollection<string>();
public void ReadResponseBuffer()
{ }
public void WriteResponseBuffer(string message)
{
Console.WriteLine(message);
}
}
//*************************************************
//-----Communication Channel Class - This class needs to use the Response Buffer APIs
//*************************************************
class CommunicationChannel
{
IResponseBuffer _objResposeBuffer;
public void SetResponseBufferObject(IResponseBuffer objResponseBuffer)
{
this._objResposeBuffer = objResponseBuffer;
}
public void StartCommunication()
{
_objResposeBuffer .WriteResponseBuffer("Hello");
}
}
//*************************************************
//-----Main Entry Point for the Program
//*************************************************
class MainWindow_EntryPoint
{
ResponseBuffer _objResponseBuffer = new ResponseBuffer();
CommunicationChannel _objComChannel = new CommunicationChannel();
//Main enter Constructor
public MainWindow_EntryPoint()
{
_objComChannel.SetResponseBufferObject(_objResponseBuffer);
_objComChannel.StartCommunication();
}
}
Объяснение кода: В приведенном выше коде у меня есть класс ResponseBuffer
, который реализует методы Read и Write для изменения очереди буфера.Я хочу скрыть этот класс, используя интерфейс IReposnseBuffer
, который предоставляет API-интерфейсы ReadReposneBuffer
и WriteReposnseBuffer
.
ПРОБЛЕМА: Хотя класс ComminicationChannel
не имеет знанийЧто касается класса ReponseBuffer
, я должен создать объект класса ReponseBuffer
в Main
.
Как я могу использовать методы класса ReposeBuffer
без непосредственного создания какого-либо из его объектов?