본문 바로가기

Swift

[Swift] Anti Pattern이 뭐고?

728x90

static을 공부하다가 .. singleton을 다시 공부했고 .. 그러다가 나온 anti pattern이라는 것 .. 이것이 무엇인가!??!

덕분에 이 상태였지만 .. 어쩌겠어 .. 공부해야지 ..

 

Anti Pattern

안티패턴이란? 소프트웨어 공학 분야 용어로,

🔵많이 사용되는 패턴이지만 🔴비생산적인 패턴을 의미한다. 

 

1995년 앤드루 케이니그가 디자인 패턴을 참고해서 처음 사용한 말 .. 이라고 한다 .. (누군데. 저도 몰라요.)

그리고 3년 후 '안티 패턴'이라는 책 때문에 '안티 패턴'이라는 말이 많이 알려지게 되었다 .. 고 한다 .. 

 

출처 : 위키 백과

 

 

싱글톤 패턴은 안티 패턴?

먼저 간단하게 싱글톤 패턴을 정리하자면,

싱글톤 패턴은 객체의 인스턴스가 한번 만들어진 이후로 해당 객체에 대한 새로운 인스턴스가 만들어지지 않는 디자인 패턴이다.

그리고 모든 영역에서 해당 인스턴스에 접근이 가능하다. 

✅ 단 하나의 인스턴스만 처음에 생성하고 새로운 인스턴스를 생성할 수 없다.

✅ 외부에서 새로운 인스턴스를 생성할 수 없지만 접근할 수 있다. 

 

 

싱글톤 패턴은 종종 안티 패턴이라고 불리기도 한다.

 

안티 패턴으로 불리는 논란의 핵심은 단순히 싱글톤 패턴이 하나의 인스턴스를 만들기 때문이 아니라,

전역에서 싱글톤 인스턴스에 접근해서 상태를 바꿀 수 있기 때문이다. 

 

프로그램 내부에 있는 코드가 인스턴스의 상태를 변경할 수 있는데 이 상태를 개발자가 인지하지 못한다면, 원하지 않는 상황에서 인스턴스의 상태가 바뀌게 되는 것이다.

 

단 하나의 인스턴스를 만드는 것도 주의해야 하는 부분이다.

만약 앱에서 하나의 객체만을 사용하다가 같은 기능을 하는 객체의 인스턴스가 구분되어 필요하다면? 

싱글톤으로 작성된 객체를 수정해야 하는데 이 인스턴스에 접근하는 모든 영역의 코드를 수정해야 한다. 

 

즉 싱글톤 패턴으로 작업을 진행한 다음,

이후에 싱글톤 인스턴스가 아니라 여러 개의 인스턴스가 필요한 상황이 생긴다면 .. 🤢 머리가 아프겠죠 . 

 

따라서 해당 객체가 반드시 하나의 인스턴스만 갖는 것이 확실하다면, 싱글톤 패턴을 선택해도 되지만

일반적으로 100% 확신할 수 없기 때문에 싱글톤 패턴은 권장되지 않는다.

(= 싱글톤 패턴은 새로운 인스턴스를 만들 수 없기 때문이다.)

 

 

 싱글톤 패턴은 장/단점이 있다.

하나의 인스턴스로 어디서든 상태가 공유 될 수 있고,
그렇기 때문에 인스턴스를 이리 저리 전달할 필요가 없다.

하지만 앱의 확장성을 생각해보면 조금은 복잡하고 번거롭더라도 인스턴스에 대한 접근을 확실하게 알고 제한고 여러 개의 인스턴스를 생성할 수 있게 하는 것이 좋다.

➡️ 무조건 싱글톤을 배척해야 하는 것은 아니지만, 사용에 있어서 주의를 하는 것이 좋다. 

'Swift' 카테고리의 다른 글

Method Swizzling  (0) 2022.10.13
[Swift] 싱글톤 패턴에서 구조체와 클래스의 차이  (0) 2022.10.13
[Swift] static을 언제 쓰는데?  (1) 2022.10.12
[Swift] class func VS static func  (0) 2022.10.12
URLSession (개념)  (0) 2022.09.01