저는 Modern C++ Design 서적을 읽지는 않았지만 재미있는 템플릿을 통한 행동 주입 아이디어를 발견했습니다. 나는 지금 그것을 직접 적용하려고 노력 중이다.정책 기반 디자인 질문 적용
나는 정책으로 주입 될 수 있다고 생각되는 로거를 가진 클래스가 있습니다. ,
이제 퀘스트가// basic_logger.hpp
template<class String>
class basic_logger
{
public:
typedef String string_type;
void log(const string_type & s) { ... }
};
typedef basic_logger<std::string> logger;
typedef basic_logger<std::wstring> wlogger;
// reader.hpp
template<class Logger = logger>
class reader
{
public:
typedef Logger logger_type;
void read()
{
_logger.log("Reading...");
}
private:
logger_type _logger;
};
리더가 상기와 같은 인자로 이력을해야 로거는 표준 : 문자열 또는 성병 :: wstring의 그 정책에 따라 취하는 로그() 메소드를 갖는다 또는 문자열을 취한 다음 인스턴스 변수로 basic_logger를 인스턴스화해야합니까? 좋아요 :
template<class String>
class reader
{
public:
typedef String string_type;
typedef basic_logger<string_type> logger_type;
// ...
private:
logger_type _logger;
};
올바른 방법은 무엇입니까?
제발, 사물의 양은 적습니다. 이것은 C++입니다. –
나는 자바에서 조금 손상되었다는 것을 안다 (나는 주로 그것에 관해 작업하지만 큰 팬이 아니다). 행동과 상태는 여전히 어떤 식 으로든 주입되어야합니다 (C++, Ruby 등). C++을 사용하면 부스트 (Boost)에서 알 수있는 것부터 정책 기반 디자인을 사용할 수 있습니다. 나는 그저 머리를 감싸려고 노력하고있다. – Arthur
사실 Alexandrescu가 이와 비슷한 예를 보여 주므로 실제로 Modern C++ Design을 읽는 것이 가장 도움이 될 것입니다. –