C/C++ 디자인 패턴 (9) — 데코레이터(Decorator)
데이터를 저장할 때 압축하고, 암호화하고, 바이트 수를 세는 기능을 필요에 따라 조합해 쓴다고 하자. 조합마다 서브클래스를 만들면 CompressedEncryptedCountingSink 같은 클래스가 끝없이 늘어나고, 조합 순서도 상속 구조에 고정된다. 데코레이터(Decorator)는 같은 인터페이스를…
데이터를 저장할 때 압축하고, 암호화하고, 바이트 수를 세는 기능을 필요에 따라 조합해 쓴다고 하자. 조합마다 서브클래스를 만들면 CompressedEncryptedCountingSink 같은 클래스가 끝없이 늘어나고, 조합 순서도 상속 구조에 고정된다. 데코레이터(Decorator)는 같은 인터페이스를…
std::sort에 비교 함수를 넘기는 방법은 여러 가지다. 함수 포인터, operator()를 가진 클래스, 람다(lambda), std::function 중 무엇을 넘기든 결과는 같다. 그런데 천만 개를 정렬해 보면 실행 시간은 2배 가까이 벌어진다. 차이는…