сокета приходит массив байтов(udp data). 7-ой байт - команда, на основании команды я могу определить наследника для конструирования. Другое дело, что наследников будет 35-40...Switch на 40 строк плохая идея по-моему, что посоветуете?
public static PacketBase FromByteArray(byte[] dataBuffer)
{
Command cmd = (Command) dataBuffer[6];
//here we must create instance based on cmd
}
юзай switch
лучше 100 строк понятного кода чем 50 строк фабрик и непонятных преобразований, когда switch будет недостаточно - тогда и заменишь на что нить получше
Альтернативный вариант - объявить у команды абстрактный метод IsApplicableTo(CommandType command): bool. В фабрике пройтись по списку команд, и взять применимую. Но с этим довольно сложно будет потом разбираться, словарь с enum'ами проще)
Обсуждают сегодня