인터페이스 및 추상 기본 클래스가있는 객체 지향 디자인을 사용하는 현명한 사람들에게 몇 가지 질문이 있습니다. 다음 시나리오를 고려하십시오.개체 지향 -이 인터페이스 선언을 배치 할 위치
나는 추상적 인 저음 클래스 "DataObjectBase"와 파생 클래스 "UserDataObject"가 있습니다. 또한 "IDataObject"인터페이스가 있습니다. 물론 인터페이스는 내 데이터 객체가 공개해야하는 모든 공용 메소드 및 속성을 노출하므로 모든 데이터 객체에 공통된 메소드 및 속성을 추상 기본이 구현한다고 추측 할 수 있습니다.
내 기본 질문은 추상 저음 클래스 인 DataObjectBase가 인터페이스 IDataObject에 지정된 모든 것을 구현하는 경우 기본 클래스 또는 파생 클래스에서 인터페이스를 선언해야합니까?
기본 클래스에서 선언 된 C# 인터페이스에서는 파생 클래스에 implicity가 적용되지만 이는 최선의 방법입니까? 기본 클래스에 인터페이스를 구현하면 파생 클래스가 인터페이스를 구현한다는 것이 명확하지 않지만 각 파생 클래스에 대해 인터페이스가 다시 지정되어야합니다.
또한 기본 클래스가 추상 클래스가 아닌 경우 reccomendation이 변경됩니까?
두 번째 하위 질문 : 기본 클래스가 IDataObject 인터페이스의 모든 메서드/속성을 구현하는 경우에도 인터페이스가 필요합니까? 기본 클래스 typename은 인터페이스 이름 대신 다음과 같이 간단하게 사용할 수 있습니다.
private DataObjectBase _dataObject;
private IDataObject _dataObject;
위 예제 (여기서베이스는 인터페이스에 의해 노출 된 모든 것을 구현 함)에서 두 파생 클래스 모두 동일한 파생 유형을 할당 할 수 있습니다. 개인적으로 나는 항상 이러한 상황에서 인터페이스를 사용하지만, 사람들의 생각을 듣고 나는 intrested입니다.
미리 감사드립니다.