2009-11-17 2 views
1

내 응용 프로그램 중 하나에 대한 로깅 서비스를 작성하고 있지만 다른 많은 응용 프로그램에서이 도구를 사용할 것으로 확신합니다. 이 경우 응용 프로그램을 클래스로 확장하고 원래 로깅을 모두 사용하도록 설정하는 것이 좋습니다 (응용 프로그램 시작 지점과 종료 지점과 같은 일부 로깅은 어떤 비용으로도 필요하기 때문에 원래 클래스에서 사용하거나 응용 프로그램을 인스턴스화하게 만듭니다). 새로운 로깅 객체와 필요하다면 언제든지 로깅 구문을 배치 할 수 있습니까?Java : 인스턴스화 또는 상속?

답변

4

새 로깅 개체를 인스턴스화합니다. 너의 물건은 로거가 아니야?

당신은 로거에서 상속하는 경우, 추가로 다음과 같은 문제가 얻을

    개체는 당신은 다른 클래스에서 상속 할 수 없습니다
  1. 위한 것입니다 무엇을 아마 아니다 로거로 사용할 수 있습니다
  2. 그것이 t 사이에 일반화 그리기에 올 때
  3. 당신은 쉽게 하나가 정말 조심해야한다, 특히 런타임 일반적으로

에서 정책을 기록 전환 할 수 없습니다 wo 클래스.

+0

감사합니다. 나는 그 문제들이 나에게 분명하다고 생각한다. – Legend

2

새로운 로깅 서비스를 만드는 대신 왜 로깅 프레임 워크 중 하나를 사용해야합니까? 모든 존경심으로 - 당신이 쓰는 것보다 더 잘 테스트되고 문서화됩니다!

나는 상속 경로를 따라 가지 않겠다. 이것은 초기 단계에서 당신을 진화하고 변화시킬 수있는 클래스로 묶어 준다.

+0

당신이 옳습니다. 나는 기존 로깅 라이브러리를 사용하는 것이 더 낫다. 내가 이것을 생각한 유일한 이유는 실제 로깅 서비스가 아니기 때문이며 또한 프로젝트의 특정 기능을 제공하기 때문입니다. 어쨌든 답장을 보내 주셔서 감사합니다. – Legend

0

OOP에서는 객체가 데이터와 로직을 수집한다는 법을 준수해야합니다.

개체가 일부 작업 (서비스)을 수행하거나 일부 데이터를 조작해야하는 경우에는 정상입니다. 그러나 그것은 로거가 아닙니다.

로그를 수행하려면 다른 서비스 나 개체에 이벤트를 발생시켜야합니다.

오브젝트가 로거에 대해 어떻게 인식하는지주의하십시오. 주입, 합성, 공장 ... 로깅 프레임 워크와 오브젝트 태스크에 관한 것입니다.