내부 인터페이스 클래스 또는 스페이스의 멤버가 될 수 수업? 실제 인터페이스 사용 목적을 깨뜨리지 않습니까?C 중 # MSDN 문서 인터페이스에 따른 클래스
4
A
답변
7
클래스는 다른 네임 스페이스입니다. 따라서 인터페이스를 사용하여 클래스의 메소드간에 이동하는 데이터에 대한 계약을 적용하거나보다 정확하게 인터페이스 범위를 지정할 수 있습니다.
2
인터페이스가 해당 클래스의 컨텍스트 내에서만 의미가있는 것은 아니며 그렇게 구현하면 분명하게 만들 수 있습니다.
필자는이 구성을 한번 사용해 본적이 없습니다.
3
수업 중에 문제를 해결하려는 경우에 유용합니다.
public class Invoice
{
public String Print(Type type)
{
IPrinter printer = null;
switch (type)
{
case Type.HTML:
printer = new HtmlPrinter(this);
break;
case Type.PDF:
printer = new PdfPrinter(this);
break;
default:
throw new ArgumentException("type");
}
printer.StepA();
printer.StepB();
printer.StepC();
return printer.FilePath;
}
private interface IPrinter
{
void StepA();
void StepB();
void StepC();
String FilePath { get; }
}
private class HtmlPrinter : IPrinter
{
//Lots of code
}
private class PdfPrinter : IPrinter
{
//Lots of code
}
public enum Type
{
HTML,
PDF
}
}
관련 문제
- 1. 로드 중 SWF의 문서 클래스
- 2. MSDN 실수로 ImageSource 클래스?
- 3. PowerShell에서 .NET 클래스 문서?
- 4. C#의 (CS) 그래프 클래스 인터페이스에 대한 다차원 컬렉션?
- 5. MSDN 정보 NOTIFYICONDATA의 cbSize 멤버에 대한 문서
- 6. 데이터 버전에 따른 클래스 이름 지정
- 7. C# 인터페이스에 필드가없는 이유는 무엇입니까?
- 8. 이벤트 핸들러, 새로운 인터페이스에 대한 기존 클래스
- 9. LaTeX의 문서 클래스 변경
- 10. C++ 클래스, 생성자 초기화 중 값 할당
- 11. 셰어 포인트 문서 라이브러리에 대한 사용자 기여도에 따른 가시성
- 12. 인터페이스에 속성이 없어야합니까?
- 13. MSDN "pseudoframe"
- 14. 나 MSDN
- 15. C++ 문서 템플릿
- 16. 문서 ID를 가져 오는 중
- 17. ABCpdf 문서 속성 복사 중
- 18. Firefox에서의 빠른 MSDN 검색
- 19. MSDN 웹 사이트는 C# 자체 학습에 충분합니까?
- 20. MSDN 스타일을 생성하는 C++ XML 주석 CHM
- 21. C++ 용 msdn 라이브러리를 다운로드하는 방법
- 22. Office 2007을 여는 중 메모리 저장 공간의 문서 - 어떻게?
- 23. 시간에 따른 백 프로 그레이션
- 24. MSDN 구독/가장 저렴한 소스 중 어느 버전
- 25. 범위 (클래스, 메서드, 전역 ...)에 따른 변수 명명 규칙
- 26. Visual C++ Express 2008의 Windows API 용 MSDN
- 27. 인터페이스에 대한 queryinterface가 실패했습니다.
- 28. mootools를위한 문서 생성 도구 클래스
- 29. MSDN 설명서를 이해하는 방법?
- 30. C# 프로젝트의 미스테리 인터페이스에 대한 경고
개인적으로 나는 하나의 코드 파일 내에서 많은 클래스의 팬이 아닙니다. 찾기 만하면됩니다. – Paddy
이 경우 의존성 주입을 사용하지 않는 것이 더 좋습니까? 그렇게하면 인쇄 담당자에게 인쇄를 결정하는 방식으로 (IPrinter가 구현되는 한) 인보이스의 복잡성을 줄이는 동시에 HTML 및 PDF보다 많은 유형의 프린터를 허용 할 수 있습니다 (예 : Mocking) . –