2012-11-22 3 views
3

나는 파생 클래스의 여러 인스턴스에서 공통 데이터를가집니다. 일반적인 데이터 속성을 공유하기 위해 기본 클래스에서 정적으로 만들었습니다. 그러나 정적 공용 속성을 인터페이스에서 선언 할 수 없습니다. 우리가 시도하는 경우, 우리는 오류 얻을 :C# : 기본 클래스의 정적 멤버

"cannot implement an interface member because it is static."

이 알려진 디자인 패턴이나 요구 사항이 종류의 가장 좋은 방법이된다?

+0

대신 추상 클래스를 사용해야합니다. – looper

답변

2

인터페이스는 인터페이스를 정의합니다. "실재"가 생기 자마자 메소드 구현 또는 공유 데이터가 될 것이므로이 경우에는 클래스와 추상 클래스가 필요합니다.

인터페이스를 유지하는 대신 인터페이스를 구현하는 클래스와 관련된 데이터를 보유하는 싱글 톤을 추가하는 것이 좋습니다. 인터페이스를 사용해야하는 경우 이것이 이동 방법입니다. 싱글 톤의 이름을 정해서 인터페이스에 논리적으로 링크되어 있고 인터페이스의 구현에 사용해야한다고 명시해야합니다.

당신의 경우, 데이터를 가진 정적 클래스가 전체 싱글 톤 구현 대신에 충분할 수도 있지만 여기서는 다루지 않을 것입니다. 전체 "정적 클래스 대 싱글 톤"은 다소 논란의 대상입니다.

9

대신 추상 기본 클래스를 사용하는 것이 좋습니다.