Modern C++ Design(study)

(이번에 Modern C++ Design을 공부할일이 있어서 이곳에 같은 내용을 적게 됬습니다.
틀린내용이 있을수 있으니 가려서 보시기 바랍니다.)

소프트웨어 디자인을 제작중에 다양한 기능의 클래스를 제작할때 복잡해지는 문제와
코드의 재사용을 위해서는 단위전략 기반의 클래스 디자인이 좋고,
이러한 디자인은 템플릿 문법과 다중상속을 이용하면 서로의 단점을
보강하여 훌륭한 해결법이 될수 있습니다.
특히 디자인의 제한조건을 사용자에게 넘기는 "스스로의 제한조건"으로 넘기는
것은 템플릿 문법의 큰 장점입니다.

단위전략은 특정단위에 대한 작업을 특정클래스에 위임하는것인데 이러한
클래스를 단위전략 클래스라하며, 아마도 stl::map에서 마지막 템플릿 인자인
정렬용 함수객체가 이러한 단위전략클래스의 한 부류라 생각됩니다.

템플릿 인자로 단위전략을 할시에는 좋은점으로서는
1. 사용자가 원하는 모습으로 특정기능을 만들어 낼수 있다.
2. 템플릿 인자를 받아들이는 클래스는 하나의 틀로서 사용될수 있다.
3. 단위전략 클래스는 다른곳에서도 사용가능하다.
4. 사용자가 단위전략을 바꾸었을시 컴파일상에서 에러를 넘겨주므로 사용방법이
틀리더라도 어디에서 사용되고 있는지 알아내기 쉽다.
라는 장점을 가질수 있고
기존에 잘 만들어진 부분에는 특화템플릿 문법으로 처리하여 피해갈수 있습니다.

책에서 소개하는 단위전략클래스는 상속과 함깨 사용되는 부분에 대한 설명이라서
소멸자에 대한 문제가 나오는데 protected로 처리하여 외부에서 해제할수 없도록
막고 있으며, 단위전략 클래스를 받는 클래스에서 처리하도록 하고 있습니다.

단위전략 클래스를 조합하는 템플릿 클래스를 만들시 기존에 일일히 손으로
상속시켜 만든것을 컴파일러를 이용하여 코드생성을 할수 있는데, 이러한
부분을 단위전략 기반의 클래스 디자인의 또하나의 큰 장점으로 꼽고 있습니다.

단위전략 템플릿 클래스는 컴파일러 입장에서는 전혀 다른 클래스이므로
변환연산자를 지정하지 않는 이상 되지 않는다는 점을 상기시키고 있습니다.

마지막으로 클래스를 단위전략 클래스로 분류할때는 단위전략 클래스끼리
공통되는 부분이 없이 독립적인 단위전략 클래스를 구성할 것을 권고 하고 있습니다.

결론적으로 템플릿을 이용한 단위전략 클래스는 단위전략 컴포넌트의 조합으로
원하는 클래스를 생성해 낼수 있고 이러한 부분은 차후 재사용성등에도
사용가능하며, 확장성에도 좋으며, 기존에 가상클래스를 기반으로
설계한 구성보다 단위전략이 바뀌었을때 컴파일 에러를 통하여
알수 있으므로 좋으며, 마지막으로 디자인의 제한조건을 사용자에게 넘길수 있으므로
사용자가 사용하기에 편하다는 장점이 있습니다.

by JetLi | 2008/05/04 22:15 | C++ Template | 트랙백 | 덧글(0)

트랙백 주소 : http://cevin.egloos.com/tb/305006
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶