Мое приложение является сервером, и мой клиент выдаст запрос на обработку.
Клиент будет обращаться ко мне (серверу) несколько раз для обработки одного и того же запроса.
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
участники не требуются в следующий раз.
Существует ли какой-либо шаблон проектирования, в котором предусмотрено оптимизированное решение (использование памяти) для этой проблемы?
В этом случае просто отделите обязательные поля от полей NotRequired в отдельных классах. Вы могли бы…
чтобы класс NotRequired удерживался указателем в классе Required, чтобы вы могли просто delete
это или
иметь класс Required указателем в классе NotRequired, чтобы вы могли переместить его в какой-то отдельный контейнер, или
храните их в отдельных контейнерах с самого начала, или
написать некоторый код для создания класса Required из класса ClientInformation — копирование полей Required (копирование неэффективно, но для этого может потребоваться меньше изменений в существующем коде, если он у вас есть).
(Я не знаю ни о каких соответствующих именах шаблонов проектирования, но не все, что вы делаете как программист, нуждается в проверке по имени шаблона проектирования — развитие вашего ментального понимания вариантов моделирования данных означает, что вы можете применять «здравый смысл», именованный или анонимно).