일반화 대 다형성에 관한 결정을 내려야합니다.C++ 표준 실습 : 가상 인터페이스 클래스와 템플릿
시나리오가 표준입니다. 내 모 놀리 식 상호 의존 코드를 더 모듈화되고, 깨끗하고 확장 가능하게 만들고 싶습니다. 디자인 원칙의 변경이 가능한 단계인데, 그리고 내가보기에 매우 바람직하다.
순전히 가상 기본 클래스 (인터페이스) 또는 템플릿을 소개합니까?
나는 템플릿 옵션에 대한 기본 사항을 알고 : 적은 간접, 더 나은 성능, 더 등등 하지만 후기 바인딩 및 컴파일.
stl은 상속을 많이 사용하지 않으며 부스트도하지 않습니다. 하지만이 코드는 프로그래머가 코드를 2 줄씩 사용하는 아주 작은 기본 도구를 목표로하고 있다고 생각합니다.
플러그인의 큰 코드 조각과 기능을 교환 할 수 있어야하고, 업데이트 가능함 등의 경우 런타임 또는 런타임 중에 더 적합하다고 생각합니다.
글쎄, 내 시나리오는 어느 정도 거짓말입니다.
런타임시 코드 조각을 교환 할 필요가 없습니다. 컴파일 시간이 좋습니다. 일반적으로 매우 중앙에서 자주 사용되는 기능 인 은 큰 블록으로 논리적으로 분리 할 수 없습니다.
이렇게하면 템플릿 솔루션이 다소 필요합니다. 나에게도 그것은 다소 깨끗해 보인다.
큰 영향이 있습니까? 아직 인터페이스가 있습니까? ? 그들은 언제입니까? 표준 C++ 스타일을 더 잘 준수합니까?
나는 이것이 주관적인 경계에 있다는 것을 알고 있지만, 나는 실제로 어떤 경험이 에 관심이있다. 나는 Scott Meyers의 복사본을 가지고 있지 않다. C++ 나는 너희들에게 희망을 걸었다. :)
글쎄, 인터페이스보다는 템플릿을 사용하는 한 가지 문제가 있습니다. 요구 사항이 완전히 암묵적입니다. 순수 가상 함수를 구현해야 할 때 정확한 서명이 주어집니다. 그러나 _AllocT 나 Iter와 같은 템플릿 유형을 볼 때 클래스가 필요하거나 클래스가되어야하는지 여부는 알 수 없습니다. 귀하의 유일한 방법은 그것에 대해 괜찮은 설명서를 찾는 것입니다, 나는 오늘 자신의 stl 호환 할당 자 클래스를 만들려고 할 때 문제가있었습니다. – Virus721
"알기 만하면 괜찮은 설명서를 찾는 것입니다"- 또는 컴파일러가 컴파일러가 찾을 수없는 것에 대해 불평하는 기능을 보려고 시도하는 중입니다. 또한 개념은이 문제를 해결하기위한 것입니다. (인터페이스 였더라도 여전히 괜찮은 문서를 찾아야합니다.재정의 할 함수를 아는 것만으로는 충분하지 않습니다. 당신은 또한 그들의 의미가 무엇인지 알아야하고, 인터페이스는 당신에게 그것을 말하지 않는다). 아직도, 당신 말이 맞아요. 언어가 둘 다 지원하는 이유가 있습니다. :) – jalf