면책 조항 : 여기 자바 용어
싱글 말하는거야 지금은 응용 프로그램에서 데이터를 공유 할 수있는 빠르고 편리한 방법으로 최근에 많이 악용 된 대부분 때문에 안티 패턴 간주됩니다 - 다소이다 공유 리소스에 대한 액세스 제어를 제공하기에 더 적합한 디자인 패턴의 과도 확장.
프로그램 표준 출력을 고려하십시오.이 리소스의 액세스는 쓰기의 동기화를 허용하는 단일 액세스 지점에 의해 보호되어야합니다. 그 이유는 예를 들어 System.out을 java의 정적 인스턴스로 사용하는 이유입니다.
싱글 톤을 시작했을 때 싱글 톤 클래스에 대해 엄격한 가정을 많이하고 있기 때문에 자신이하는 일에 대한 자세한 정보를 알아야합니다. 시스템의 유일한 클래스. 여러분의 리소스에 대한 단일 엔트리 포인트가 될 것이라고 가정하고, 클래스가 이제 ejb 서버에 배치되었고 각각의 ejb 컨텍스트가 자신의 싱글 톤과 더 많은 싱글 톤을 갖기 때문에 그것을 사용하기 시작합니다 서버에서 다시로드 된 모든 JSP와 싱글 톤이 직렬화되고 역 직렬화 될 때마다 하나의 싱글 톤을 추가합니다 (readResolve() 메소드를 무시하는 것을 잊어 버렸기 때문에).
그래서 싱글 톤은 많은주의를 기울여 사용되어야하며, 이제 의도 된 용도에 완전히 유용함에도 불구하고 반 패턴으로 간주됩니다.
데이터베이스 캐시의 경우이 "캐시"리소스에 대한 프록시를 사용하여 각 클래스에 캐시가 필요한 경우 더 나은 방법이므로 "리소스 찾기"로직을 추가 할 수 있습니다. 논리를 캐시 싱글 톤 검색에 묶는 대신 프록시 자체를 사용하면 환경에 따라 작동하지 않을 수도 있습니다.
그래서 리소스를 공유하는 방법을 하드 코딩하고 (싱글 톤 함정을 무시하고) 동기화 목적으로 리소스를 제어하는 싱글 톤을 사용하기 때문에 싱글 톤을 리소스로 사용하는 수단으로 사용하는 단어가 거의 없습니다. 완전히 받아 들일 수 있습니다.
세마포어는 항상 동일한 세마포어를 얻을 수있는 경우에만 작동합니다. 후자의 경우 문제는 세마포어에 액세스해야하는 모든 곳에서 싱글 톤에 액세스하는 것입니다. 여기서는 싱글 톤을 랩핑하고 세마포어 자체의 라이프 사이클을보다 세밀하게 제어하는 데 필요한 클래스가 필요합니다.
프록시는 하나의 응용 프로그램, 클라이언트 서버 시스템, 동일한 시스템의 다른 구성 요소 등 "시스템에서 자원 제공"역할을 포함하도록 의도되었으며 érpxy를 사용하면 자원 검색 방법이 불투명합니다. 캐시 된 값의 해시 맵을 포함하는 싱글 톤을 제공하도록 할 수 있습니다. 네트워크에서 memcached 셸에 액세스하도록 할 수 있습니다. 응용 프로그램에서 호출하는 방법을 변경하지 않고도 테스트 중에 CSV를 읽을 수 있습니다.
디자인 패턴 mindmap : http://www.mindmeister.com/7008138/design-patterns – jldupont