2011-04-28 5 views
0

로깅 목적으로 런타임에 많은 스레드에서 사용되는 singleton 로거가 있습니다. 다른 유형이 필요하므로 가변 부분을 protected 메쏘드로 옮기고 그로부터 상속받습니다.싱글 톤 클래스에서 상속 고려 사항

singleton 클래스의 상속에 특별한 것이 있습니까 (정규 클래스에는없는 고려 사항)?

+1

부모 클래스의 생성자를 사용하므로 상속 클래스가 new()에 부모 클래스를 반환하지 않습니다. –

+3

제 질문은 - 왜 시도하고 있습니까? 싱글 톤으로부터 상속 받습니까? –

+0

@William : 예를 들어, 자식이 로그 파일 형식을 변경하려고하는 경우. 이 로거는 로깅이 완료된 곳 (어셈블리, 네임 스페이스, 클래스, 메소드)과 같은 각 로그에 데이터를 추가합니다. 나는 한 줄의 코드 로깅이 가능하도록 싱글 톤으로 만들 수있다 : Logger.Log.info ("Hello World!")' – Xaqron

답변

1

싱글 톤은 밀봉해야합니다. 그렇지 않으면 실제로는 실제로 싱글 톤이 아닐 수도 있습니다.

클래스의 라이프 스타일을 관리하려면 StructureMap, Autofac 또는 Castle Windsor와 같은 IOC 컨테이너를 사용할 수 있습니다. 싱글 톤으로 쓰지 않아도됩니다. 싱글 톤으로 IOC 컨테이너에 선언하면됩니다.

즉, 특정 예제 (로깅을 원한다)를 보았을 때 실제로는 싱글 톤 클래스가 필요하지 않을 수 있습니다. 객체를 생성 할 때 심각한 오버 헤드와 같은 아주 좋은 이유가있는 경우에만 싱글 톤을 사용합니다. 하지만 쓰기위한 텍스트 파일을 여는 것은 중요한 오버 헤드로 계산되지 않습니다 ...

+0

오버 헤드는 좋지만 파일에 대한 동시 액세스는 나를위한 싱글 톤을 정당화합니다. – Emmanuel

+0

파일에 대한 동시 쓰기 액세스의 경우 대기열을 구현하거나 잠금을 사용하여 중요한 섹션을 만들어야합니다. 파일에 대한 동시 쓰기 액세스 같은 것은있을 수 없습니다. –