#pragma once #include #include #include #include "common/log/log.h" #include "common/macro/macros.h" template class AbstractFactory { virtual ~AbstractFactory() = default; virtual std::shared_ptr Create() = 0; }; template class ConcreteFactory { virtual std::shared_ptr Create() = 0; };