목록Singleton (3)
Coding Memo
싱글턴 디자인 패턴은 어플리케이션 전체에서 단 하나만 존재해야하는 인스턴스를 위한 패턴이다. 특정 인터페이스를 제공한다거나 동일한 데이터를 사용할 때 한번만 로드할 때 사용한다. 보통은 전역적으로 접근 가능한 인스턴스를 사용한다. 또, 어플리케이션 시작 시점에 인스턴스를 로드할지, 이후에 사용할 때 로드 할지 (Lazy Intialization) 잘 고려하면 될 것이다. 싱글턴 패턴 구현은 언어와 개발 환경에 따라 크게 달라지는 것 같다.인스턴스를 1개로 제한하는 방법에는 인스턴스 카운트를 관리하는 코드를 추가하거나, static 전역 변수를 두어 이 인스턴스를 반환하여 사용하는 메서드를 만들면 될 것이다.보통 후자의 방법이 많이 사용되는 것 같다. 먼저 구현하는 코드를 살펴보자. struct Singl..
"멀티 스레드 환경에서 싱글턴 클래스의 생성자도 동시에 여러 스레드가 접근 할 수 있다는 것을 기억하자." 싱글턴 패턴 사용시에 스레드에 주의해야 한다. 당연하고 또 당연한 말이고 쉽게 찾을 수 있는 에러이기도 하지만 여기에 간단하게 작성해본다. Singleton이란 싱글턴 클래스가 있다고 가정하자. 먼저 내가 겪었던 상황은 다음과 같다. - 싱글턴 클래스가 Only-Read로만 사용되기 때문에 멀티스레드 환경에서의 다른 lock 처리를 해주지 않았다. - 어떤 스레드 하나가 데이터를 받으면 Singleton .Instance.method()를 호출한다. - 바로 위 상황이 아니면 다른 코드에서 이 싱글턴 클래스를 사용하지 않았다. - 이 싱글턴 클래스는 생성자에서 처음이자 마지막으로 콜랙션에 데이터를 ..
싱글턴 패턴 싱글턴 패턴은 자주 이용되는 디자인 패턴 중 하나이다. 간단하게 정의하자면, 어떤 특정 컴포넌트의 인스턴스가 애플리케이션 전체에 단 하나만 존재해야 하는 상황에서 사용하는 디자인 패턴이다. 싱글턴으로 디자인된 클래스에 인스턴스를 요청하면, 인스턴스를 반환하는 방식이다. 직접 new()를 사용해 인스턴스를 생성하지 않는다는 것을 기억하자. 구현 위 내용을 코드로 구현한다면 (C#, Java) class Singleton { private static Singleton _instance; public static Singleton Instance { get { if (_instance == null) { _instance = new(); return _instance; } return _inst..