내 응용 프로그램에 대한 인터셉터를 구현하려고했는데, 그 객체는 본 객체를 추적 할 수 있습니다. 나는 지금 볼 수있는 대상이 새로운 것인지 재사용 된 것인지를 말할 수 있어야합니다.이미 본 객체를 계속 추적합니다.
public interface Interceptor {
void process(Object o);
}
내가 그 객체를 추적 할 것 세트를 추가하는 방법에 대해 생각을 해 봤는데 :
나는 이와 같은 인터페이스는 한 가정. 하지만 그런 종류의 행동으로 메모리 누출을 일으키고 싶지 않기 때문에 아마도 다른 패턴을 고안해야할까요? 결국, 그 물체는 다른 층에서 파괴 될 수 있습니다.
가능한 해결책이 보인다 :
- 는 HashSet의 대신 WeakHashSet를 사용하여 설정
- 에 객체의 해시 코드를 넣어 이
첫 번째 옵션은 100 % 신뢰할 수있는 것, 해시 코드가되지 않을 수 있기 때문에 독특한. 두 번째 옵션에 관해서는, 이것이 memleak을 막을 수 있을지 확신하지 못합니다.
또 하나의 메모는 개체를 수정할 수 없으며 입력란을 추가 할 수 없습니다. 줄 바꿈도 옵션이 아닙니다.
아이디어가 있으십니까?
위 참조. get() 메소드는 null을 줄 것이다. –