기록
article thumbnail
728x90

출처 : YES24

독서진행 : 167-176p (종이책)

 

오늘의 메모


- 디자인 패턴은 꽤 오랫동안 쓰여왔고, 다양한 상황에서 유용성이 입증되었다. 따라서 디자인 패턴에 대해 이야기하는 데 친숙해지는 것이 좋다. 디자인 패턴은 특정 언어에 한정되거나 구현 방법이 정해져있는 것은 아니다. 하지만 주로 C++, 자바 같은 엄격한 자료형의 정적 클래스 기반 언어의 관점에서 다년간 연구되어 왔다. 자바스크립트는 느슨한 자료형의 동적 프로토타입 기반 언어이기 때문에, 일부 디자인 패턴은 놀라울 정도로 쉽게, 심지어 아주 간단한 방법으로 구현할 수 있다.
- 싱글톤 패턴은 특정 클래스의 인스턴스를 오직 하나만 유지한다. 즉 동일한 클래스를 사용하여 새로운 객체를 생성하면, 두 번째부터는 처음 만들어진 객체를 얻게 된다.
- 자바스크립트에는 클래스가 없고 오직 객체만 있다. 새로운 객체를 만들면 실제로 이 객체는 다른 어떤 객체와도 같지 않기 때문에 이미 싱글톤이다. 객체 리터럴로 만든 단순한 객체 또한 싱글톤의 예다. 자바스크립트에서 객체들은 동일한 객체가 아니고서는 절대로 같을 수 없다. 완전히 같은 멤버를 가지는 똑같은 객체를 만들더라도, 이전에 만들어진 객체와 동일하지는 않다. 따라서 객체 리터럴을 이용해 객체를 생성할 때마다 사실은 싱글톤을 만드는 것이고, 싱글톤을 만들기 위한 별도의 문법이 존재하지 않는다고 할 수 있다.
- 자바스크립트에는 생성자 함수를 사용해 객체를 만드는 new 구문이 있고, 때로는 이 구문을 사용해서 싱글톤을 구현하고자 할 수도 있다. 동일한 생성자 new를 사용하여 여러 개의 객체를 만들 경우, 실제로는 동일한 객체에 대한 새로운 포인터만 반환하도록 구현하는 것이다.
- 팩터리 패턴의 목적은 객체들을 생성하는 것이다. 비슷한 객체를 생성하는 반복 작업을 수행하며, 팩터리 패턴의 사용자가 컴파일 타임에 구체적인 타입(클래스)을 모르고도 객체를 생성할 수 있게 해준다.
- 팩터리 메서드(또는 클래스)로 만들어진 객체들은 의도적으로 동일한 부모 객체를 상속한다. 즉, 이들은 특화된 기능을 구현하는 구체적인 서브 클래스들이다. 어떤 경우에는 공통의 부모 클래스가 팩터리 메서드를 갖고 있기도 하다.
- 팩터리 패턴의 실전 예제로 언어에 내장되어 있는 전역 Object() 생성자를 생각해보자. 이 생성자도 입력 값에 따라 다른 객체를 생성하기 때문에 팩터리처럼 동작한다고 할 수 있다.

 

베끼는 부분이랑 읽는 게 다른데..

코드 재사용 패턴이 인덱스를 넘기고 디자인 패턴부터 보기 시작했다...

이왕 쓴 거 싱글톤이랑 팩터리 패턴까지는 다 보았다.

싱글톤이랑 팩터리 패턴은 특히나 .NET 6 프로젝트를 구현할 때

미들웨어 쪽에서 scope를 정하고 이상한 오류 날 때 바꿨었는데..

설명을 봐도 그렇구나..그럴까..? 음... 이랬다

HttpContext 팩토리 문제도 봐도 

음 쓰라니까 그냥 써야겠다. 복사 붙여넣기하고 넘어갔었는데,

오늘은 목적을 좀 알게 된 것 같다

패턴은 계속 오래보고 프레임워크에 적용된 것을 넘어가지 않고 한 번 아티클이나, 공식 문서를 놓치지 않고 읽어보는 게 중요한 것 같다

 

728x90