enum 은 단일 사례 를 실현 하 는 가장 좋 은 해결 방안 입 니까?
너 는 분명히 여러 번 들 어 본 적 이 있 을 것 이다. enum 은 항상 단일 모델 의 가장 좋 은 선택 을 실현 한다.그럼 enum 이 최선 인가요?다른 실현 방식 에 비해 어떤 좋 은 점 이 있 습 니까?어디 보 자. 하나의 사례 모델 을 실현 하 는 것 은 매우 까다롭다. 나 도 다른 블 로그 에서 여러 가지 실현 방법 을 언급 했다.http://howtodoinjava.com/2012/10/22/singleton-design-pattern-in-java/。블 로그 에서 enums 는 단일 모델 의 실현 에 대해 사례 의 유일 성과 스 레 드 의 안전성 을 확보 했다 고 명확 하 게 지적 했다.또한 단일 모델 을 실현 하 는 좋 은 방법 이기 도 하 다.
Problems with enum as singleton Having said that, like with any other thing in universe, this approach does have it’s disadvantages which you will need to consider before making any decision. enums do not support lazy loading. Though it’s very very rare but if you changed your mind and now want to convert your singleton to multi-ton, enum would not allow this. If above both cases are no problem for anybody, the enum is probably best choice. Anyways, on side note, after compilation java enums are converted to classes only with additional methods e.g. values() and valueOf()… etc. enum based singleton example Once you have decided to write enum based singleton, writing it is really easy e.g.
enum Singleton
{
INSTANCE;
// instance vars, constructor
private final Connection connection;
Singleton()
{
// Initialize the connection
connection = DB.getConnection();
}
// Static getter
public static Singleton getInstance()
{
return INSTANCE;
}
public Connection getConnection()
{
return connection;
}
}
Now you use can use final Singleton s = Singleton.getInstance(). Remember that since this is an enum you can always access this via Singleton.INSTANCE as well. Happy Learning !!
http://howtodoinjava.com/2015/10/20/is-enum-really-best-for-singletons/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails5에서 enum을 사용할 때는 _prefix (접두사) _suffix (접미사)를 사용합시다.Rails5에서 ActiveRecord::Enum를 정의 할 때 _prefix, _suffix라는 무기가 있다는 것을 알고 싶습니다. You can use the :_prefix or :_suffix options ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.