싱글톤 패턴
- 싱글톤패턴(Singleton Pattern)은 오직 한개의 인스턴스만을 갖도록 보장하고, 이에대한 전역적인 접근점을 제공하는 패턴이다.
싱글톤 패턴 장점
1. 인스턴스 유일성을 보장한다.
- 싱글톤 패턴은 인스턴스가 유일하게 컴파일 단계에서 강제한다.
인스턴스 개수를 늘리고싶을때도 유연하게 바꿀 수 있다.
2. 게으른 초기화(Lazy Initialization)가 일어난다.
- 사용하지 않는다면 생성되지 않을 뿐더러 런타임에 초기화가 된다.
3. 어디서든 접근성이 쉽다.
- 전역적인 접근점을 제공하기 때문이다.
싱글톤 패턴 단점
1. 객체지향의 의도와 맞지 않는다.
- Singleton의 사용은 Global state를 만들 수 있기 때문에 바람직한 방법은 아니다.
- 아무객체나 자유롭게 접근하고 수정하고 공유할 수 있는 전역상태를 갖는건 객체지향에서는 지양해야하는 모델이다.
2. 게으른 초기화를 방지할 수 없다.
초기화에 오랜 시간이 걸리거나, 메모리 단편화를 방지하기 위해 메모리 풀링(Memory Pooling)을 사용하는 경우
초기화 시점을 제어해야하지만, 싱글톤 패턴에서는 불가능하다.
싱글톤 패턴에 대한 개인 견해
개인적으로 실무에서 가장 많이 사용하고 있는 패턴중 하나입니다. 그러나, 코드 리팩토링이 필요한 시점에서 리팩토링을 하게되면 모든 영역에서 영향을 받는다는 점이 있습니다. 단점이죠..
또한, 가장 불편한 점이 디버깅 시, Visual studio에서 제공해주는 Pin 기능으로 Value 확인을 고정으로 하지 않는 이상 해당 전역 변수에 들어가있는 값을 볼 수 없다는 점입니다. 그렇다고 일일히 Console에다가 해당 변수 값을 써넣어주는 코드를 입력하기에는 너무 번거롭구요. 아무튼 너무 남용하지만 않는다면 사용하기 좋은 디자인 패턴인것 같네요.
Code ( C# )
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using OpenCvSharp;
namespace Singleton_Pattern.Pattern
{
class Singleton
{
private static Singleton instance;
public static Singleton GLOBAL
{
get
{
if(instance == null)
instance = new Singleton();
return instance;
}
}
public int _testGlobal;
}
}
위 코드처럼 static으로 만들어 주게되면, 타 class에서도 선언된 GLOBAL 객체를통해 해당 class 내부에 있는
여러 변수들 또는 Form, Window, class 등등을 사용할 수 있습니다.
'📚 Computer Science > Design Pattern' 카테고리의 다른 글
[Design Pattern] MVVM 패턴 (0) | 2022.10.07 |
---|