2014-01-21 2 views
3

나는이 인터뷰 질문을 발견했으며, 내 생각이 옳다면 궁금합니다. 연결 풀 (예 : 사용자에게 연결을 반환하는 클래스, 사용자가 완료하면 다시 풀에 반환하는 클래스)을 디자인/작성해야합니다. 내 생각은 Singleton 패턴으로 풀을 생성하고 Connection이라는 내부 클래스를가집니다. 풀은 일련의 연결 객체를 보유 할 것이고, 어떤 연결 객체는 연결이 사용 가능한지 (사용 중인지 아닌지)를 나타내는 부울 필드를 가지며 풀을 연결 객체에 등록합니다. 사용자가 연결을 close()라고하면 연결은 availableConnection과 같이 업데이트 할 풀에 알리고 연결에서 isAvaiable을 true로 변경합니다.연결 풀을 설계/작성하는 방법

내가 더 추가해야 할 것이 있습니까? 내가 놓친 게 있니? 여기서는 Object Pool Pattern이 유용 할 것 같지만 구현 방법을 모르겠습니다.

도움을 주시면 감사하겠습니다. 감사.

+0

실물 크기로 코딩하는 것이 가장 좋습니다. 그렇다면 그것이 어떻게 함께 나타나는지 보게 될 것입니다. 그리고 네, Object Pool 패턴이 여기에 있습니다. – trailmax

답변

0

부울 플래그를 유지하는 대신 사용 된 개체를 유지 관리하는 하나와 사용 가능한 개체를 유지하는 두 개의 목록 만 유지하면됩니다. 이렇게하면 사용 된 개체 수가 적을 때 쉽게 검색 할 수 있습니다.

그러나 개체 풀 패턴은 가비지 수집기를 사용하는 프로그래밍 언어에서 선호되지 않습니다. (대부분의 가비지 수집기는 이러한 객체가 내용에 사용하는 메모리가 아닌 "실제"객체 참조를 검색하므로 참조가없는 여러 개의 "죽은"객체는 비용이 거의 들지 않고 버려 질 수 있습니다. "라이브"이지만 사용하지 않는 개체는 가비지 수집 기간을 늘립니다.)

관련 문제