로깅 목적으로 런타임에 많은 스레드에서 사용되는 singleton
로거가 있습니다. 다른 유형이 필요하므로 가변 부분을 protected
메쏘드로 옮기고 그로부터 상속받습니다.싱글 톤 클래스에서 상속 고려 사항
singleton
클래스의 상속에 특별한 것이 있습니까 (정규 클래스에는없는 고려 사항)?
로깅 목적으로 런타임에 많은 스레드에서 사용되는 singleton
로거가 있습니다. 다른 유형이 필요하므로 가변 부분을 protected
메쏘드로 옮기고 그로부터 상속받습니다.싱글 톤 클래스에서 상속 고려 사항
singleton
클래스의 상속에 특별한 것이 있습니까 (정규 클래스에는없는 고려 사항)?
싱글 톤은 밀봉해야합니다. 그렇지 않으면 실제로는 실제로 싱글 톤이 아닐 수도 있습니다.
클래스의 라이프 스타일을 관리하려면 StructureMap, Autofac 또는 Castle Windsor와 같은 IOC 컨테이너를 사용할 수 있습니다. 싱글 톤으로 쓰지 않아도됩니다. 싱글 톤으로 IOC 컨테이너에 선언하면됩니다.
즉, 특정 예제 (로깅을 원한다)를 보았을 때 실제로는 싱글 톤 클래스가 필요하지 않을 수 있습니다. 객체를 생성 할 때 심각한 오버 헤드와 같은 아주 좋은 이유가있는 경우에만 싱글 톤을 사용합니다. 하지만 쓰기위한 텍스트 파일을 여는 것은 중요한 오버 헤드로 계산되지 않습니다 ...
오버 헤드는 좋지만 파일에 대한 동시 액세스는 나를위한 싱글 톤을 정당화합니다. – Emmanuel
파일에 대한 동시 쓰기 액세스의 경우 대기열을 구현하거나 잠금을 사용하여 중요한 섹션을 만들어야합니다. 파일에 대한 동시 쓰기 액세스 같은 것은있을 수 없습니다. –
부모 클래스의 생성자를 사용하므로 상속 클래스가 new()에 부모 클래스를 반환하지 않습니다. –
제 질문은 - 왜 시도하고 있습니까? 싱글 톤으로부터 상속 받습니까? –
@William : 예를 들어, 자식이 로그 파일 형식을 변경하려고하는 경우. 이 로거는 로깅이 완료된 곳 (어셈블리, 네임 스페이스, 클래스, 메소드)과 같은 각 로그에 데이터를 추가합니다. 나는 한 줄의 코드 로깅이 가능하도록 싱글 톤으로 만들 수있다 : Logger.Log.info ("Hello World!")' – Xaqron