2011-02-16 4 views
2

[자바]비 AOP 모범 사례

내 코드를 통해 모든 (LogHelpers, 예외 핸들러, CacheHelpers 등) 모든 "크로스 커팅을 대표하는 것으로 나타납니다 여러 유틸리티 클래스가 우려 "를 제외하고는 AOP를위한 이상적인 후보자가 될 것입니다 ... 저는 AspectJ 또는 AOP Alliance 또는 Google Guice와 같은 AOP 프레임 워크를 배울 시간이 없습니다.

나는 아직도 코드를 깔끔하고 깨끗하게 유지하고 베스트 프랙티스 (비 AOP 베스트 프랙티스는 가능합니다!)를 유지하는 것이 좋습니다.

아마도 두 가지 해결책이 필요합니다. 첫 번째는 정적 메서드가 필요한 보편적/고도로 결합 된/AOP- 후보 클래스가 몇 개 있다는 점입니다. 클래스 자체에는 비 정적/인스턴스 수준의 메소드가 없습니다. ExceptionHandler.handleException (Exception exc)과 같은 것들.

두 번째 문제는 메서드 인스턴스가 있고 인스턴스화해야하지만 내 응용 프로그램이 하나의 "전역"클래스를 만드는 싱글 톤 (singletons)으로 가장 잘 제공되는 범용/AOP- 후보 클래스가 몇 개 있다는 점입니다. 다른 패키지와 코드베이스에서 동일한 참조가 사용됩니다. SOOO

...

내 질문은 : 클래스 & 관행이 최고 (비 AOP) 디자인 패턴을 어떤이 :

(A) 만 모든 코드베이스를 통해 소비 정적 메소드를 정의; (b) 코드베이스 전체에서 소비되는 단일 인스턴스 만 필요합니까?

싱글 톤 패턴? 공장? 정적 수입? 다른?!?!

의견을 보내 주셔서 감사합니다.

답변

1

Inversion of Control (평생 관리를 지원하는 IoC Container library) 및 인터페이스의 생성자 종속성 주입을 사용합니다.

Service Locator 패턴을 사용할 수는 있지만이를 피하십시오.

"싱글 톤"은 단지 POJO입니다. IoC 컨테이너는 컨테이너 관리 수명 또는 일부를 설정하는 경우 하나만을 보장합니다.

+0

감사합니다. 나는 오늘 밤 IoC를 점검 할 것이다. IoC는 Dependency Injection과 같은가요? – Eugie

+0

@Eugie - IoC는 광범위한 용어이지만 실제로는 그렇습니다. 자세한 내용은 http://www.martinfowler.com/articles/injection.html을 참조하십시오. – TrueWill