Я реализую балансировщик нагрузки, который должен выбирать стратегию балансировки на основе некоторой логики:
Код: Выделить всё
class LoadBalancer{
public:
bool get_backend_cpu_info(){// some complicate logic involve member backends b }
static void create(){
if successfully get_backend_cpu_info():
use LoadBalancerCPU.choose_backend()
else
use LoadBalancerRoundRobin.choose_backend()
}
choose_backend(){// depends on which type of loadbalancer we are using}
private:
vector b;
};
В c++ простой прямой подход состоит в том, чтобы сделать select_backend виртуальной функцией для получения полиморфизма во время выполнения. Однако метод get_backend_cpu_info() также является сложным процессом и требует доступа к бэкэндам членов класса, а это означает, что мне нужно создать сам класс перед вызовом get_backend_cpu_info() . Другой подход — использовать фабричный метод, но методу get_backend_cpu_info() требуется доступ к членам перед созданием объекта. Что такое хороший шаблон проектирования или отношения классов в моем случае???? Этот вопрос не зависит от языка, и я просто использую C++ в качестве примера.
Я ожидаю хорошего шаблона проектирования или дизайна отношений классов, желательно с кодом C++
Подробнее здесь:
https://stackoverflow.com/questions/787 ... turn-value