N
NikSoft
В моей предыдущей заметке( Singleton паттерн ) было показано как строить тип, только один обьект которого находится в памяти в любой момент времени. Но иногда бывает необходимо иметь не больше нескольких обьектов данного типа.
Пусть наш компьютер имеет два последовательных порта, причем с первым портом должен работать один обьект типа SerialPort , а со вторым портом – второй обьект этого же типа. Следующий код решает задачу.
Как видно из кода, при попытке создать третий обьект типа SerialPort выдается сообщение
“Разрешено рабатать на более чем с двумя последовательными портами”.
Данный код легко модифицируется для конкретных нужд разработчика.
Пусть наш компьютер имеет два последовательных порта, причем с первым портом должен работать один обьект типа SerialPort , а со вторым портом – второй обьект этого же типа. Следующий код решает задачу.
Код:
using System;
namespace SerialPorts
{
////////////////////////////////////////////////////////////
class Program
{
static void Main(string[] args)
{
SerialPort serialPort1, serialPort2, serialPort3;
try
{
serialPort1 = new SerialPort(1);
serialPort2 = new SerialPort(2);
serialPort3 = new SerialPort(3);
}
catch (SerialPortException spe)
{
Console.WriteLine(spe.Message);
}
Console.ReadLine();
}
}
////////////////////////////////////////////////////////////
class SerialPort
{
static int _instanceNumber;
int _portNumber;
public SerialPort(int portNumber)
{
if (_instanceNumber > 1)
{
throw new SerialPortException("No more than 2 serial ports allowed");
}
else
{
_instanceNumber++;
_portNumber = portNumber;
Console.WriteLine(String.Format("Starting to work with serial port {0}", _portNumber));
}
}
}
////////////////////////////////////////////////////////////
class SerialPortException: Exception
{
public SerialPortException(string s): base(s){}
}
}
Как видно из кода, при попытке создать третий обьект типа SerialPort выдается сообщение
“Разрешено рабатать на более чем с двумя последовательными портами”.
Данный код легко модифицируется для конкретных нужд разработчика.