c++ 인터페이스 예제

또한 예를 들어 네이티브 C ++ 형식이거나 어떤 이유로 변경할 가능성이 없는 코드이기 때문에 메서드를 추가할 수 없는 형식이 있습니다. 그런 다음 이러한 형식을 인수로 허용하는 자유 함수를 정의할 수 있습니다. 셰이프 추상화는 인터페이스 클래스로 표현되며 순수한 가상 함수 선언만 포함됩니다. 이것은 우리가 인터페이스를 표현하는 C ++에서 얻을 수있는 만큼 가깝습니다. 용어에 추가하면 line(및 호)과 같은 클래스를 구현 클래스라고 합니다. 위의 경우기존 코드를 변경하지 않고 새 구현을 추가할 수 있습니다. 예를 들어 드로잉에는 처음에는 구현 클래스가 하나만 있을 가능성이 높지만 다른 코드는 인터페이스 클래스에만 종속되므로 나중에 새 구현을 쉽게 추가할 수 있습니다. 인터페이스 원칙은 인터페이스를 갖는 일반적인 개념을 넘어다, 다형성과 직접 관련이 없습니다. 설명하기 위해 Circle의 인터페이스를 네임스페이스, 지오메트리에 넣은 다음 이러한 메서드를 클래스에서 제거할 수 있습니다.

실제로 외부 함수가 사용할 수 없는 것을 사용하지 않기 때문에 클래스 메서드일 필요는 없습니다. 클래스에서 꺼내서 무료 함수로 만들면 공용 인터페이스 이외의 다른 것을 사용하지 않는 특성이 유지되므로 Circle 클래스 의 내부를 캡슐화하는 데 기여합니다. 개인 상속을 사용하면 클라이언트가 지정 할 수있는 인터페이스를 사용할 수 없게되었지만 my_window에 개인인 다른 것과 마찬가지로 해당 멤버 함수에서 개인 기본 클래스에 액세스할 수 있기 때문에 my_window에서 사용할 수 있습니다. 이러한 접근 방식은 mixin 기능의 사용이 촉진하고자하는 우려의 분리를 강화하는 데 도움이됩니다. 메서드에 대한 것입니다. 그러나 이러한 차이를 넘어, 인터페이스 원칙은 이 두 구문이 동일한 것을 표현한다는 것을 의미합니다: Circle 인터페이스에서 getPerimeter 루틴을 호출합니다. 직렬화 가능한 가상 멤버 함수는 줄의 인터페이스에서 선언되어야 하기 때문에 이 방법은 어느 정도 방해가 됩니다. 그러나, 적어도 직렬화는 중요한 형상 추상화와 는 별개로 유지된다는 점에서 분리가 있다. 후자의 경우 셰이프가 더 이상 즉각적인 기본 클래스가 아니므로 기본 클래스를 shape_impl로 변경하면 컴파일 오류가 발생합니다.

이렇게 하면 항상 인터페이스 클래스의 생성기를 명시적으로 호출하는 다음 권장 사항을 만들 수 있습니다.