Разработка шаблона для хранения информации о клиенте на карте в серверном приложении

Мое приложение является сервером, и мой клиент выдаст запрос на обработку.
Клиент будет обращаться ко мне (серверу) несколько раз для обработки одного и того же запроса.

map<clientId,ClientInformation>

Обычно я храню некоторую информацию, которую я получил от клиента, в STL Map для обработки запроса клиента в следующий раз.

Как только клиент будет удовлетворен в моей порции, я очищу запись на карте для соответствующего идентификатора клиента.

Это мой образец ClientInformation учебный класс:

class ClientInformation
{
int NotRequiredForNextTime;  // Information Not required for  processing the client request next time
int requiredforNextTime;  // Information required for  processing the client request next time
int requiredforNextTime;  // Information required for  processing the client request next time
int NotRequiredForNextTime;  // Information Not required for  processing the client request next time
int NotRequiredForNextTime;  // Information Not required for  processing the client request next time

UserDefinedClass Class1;
};

Class UserDefinedClass
{
int requiredforNextTime;
int NotRequiredForNextTime;
}

В вышеуказанном классе мне требуется только requiredforNextTime храниться на карте. другая информация требуется только во время обработки текущего запроса.

ClientInformation класс может иметь пользовательский класс в качестве члена (UserDefinedClass) и некоторые из UserDefinedClass участники не требуются в следующий раз.

Существует ли какой-либо шаблон проектирования, в котором предусмотрено оптимизированное решение (использование памяти) для этой проблемы?

1

Решение

В этом случае просто отделите обязательные поля от полей NotRequired в отдельных классах. Вы могли бы…

  • чтобы класс NotRequired удерживался указателем в классе Required, чтобы вы могли просто delete это или

  • иметь класс Required указателем в классе NotRequired, чтобы вы могли переместить его в какой-то отдельный контейнер, или

  • храните их в отдельных контейнерах с самого начала, или

  • написать некоторый код для создания класса Required из класса ClientInformation — копирование полей Required (копирование неэффективно, но для этого может потребоваться меньше изменений в существующем коде, если он у вас есть).

    • «сериализация» является одной из форм этого, хотя в этом случае данные не обязательно хранятся в доступной структуре во время хранения, и требуется отдельный этап десериализации для воссоздания класса Required или, возможно, для повторного заполнения только полей Required другого объекта ClientInformation

(Я не знаю ни о каких соответствующих именах шаблонов проектирования, но не все, что вы делаете как программист, нуждается в проверке по имени шаблона проектирования — развитие вашего ментального понимания вариантов моделирования данных означает, что вы можете применять «здравый смысл», именованный или анонимно).

1

Другие решения


По вопросам рекламы [email protected]