Bleeding edge

2022/08/04 - TIL 본문

ConnecTo

2022/08/04 - TIL

codevil 2022. 8. 4. 17:41

오늘 공부한 것

디자인 패턴

: 객체 간의 상호 관계를 이용하여 문제점을 해결하는 하나의 규약을 말한다

1. 싱글톤 패턴

: 오직 하나의 인스턴스만 가지는 패턴으로 보통 데이터 베이스 연결 모듈에 많이 사용한다.

장점 : 인스턴스를 생성할 때 비용이 줄어드는 장점

단점 : 의존성이 높아진다. 의존성이 높기 때문에 단위단위의 테스트를 하기 힘들다.

싱글톤패턴 이용 사례: 데이터베이스 연결

단점 해결 방법 : 의존성 주입

  • 의존성주입 장점 : 모듈들을 쉽게 교체할 수있고 테스팅하기 쉽고 모듈간의 관계를 좀 더 명확하게 합니다.
  • 의존성주입 단점 : 모듈들의 클래스 수가 늘어나서 복잡성이 증가하므로 런타임 패널티가 생깁니다
  • 의존성주입 원칙 : 상위 모듈은 하위 모듈에서 어떠한 것도 가져오지 않아야하며, 둘다 추상화에 의존을 해야하며 추상화 세부사항에 의존하지 말아야 합니다

2. 팩토리 패턴

: 객체 생성 부분을 뗴어내 추상화한 패턴이자 상속 관계에 있는 두클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴입니다.

3. 전략 패턴

: 객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴입니다.

예시 : 서비스 내의 회원가입된 아이디와 비밀번호를 기반으로 인증하는 LocalStategy전략과 Oath

4. 옵저버 패턴

: 옵저버 패턴은 주제가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때 마다 매서드 등을 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴입니다.

  • 주체 : 객체의 상태를 보고 있는 관찰자

응용예시 : MVC,

5. 프록시 패턴

: 객체에 접근하기 전에 흐름을 가로채 대상 객체 앞단의 인터페이스의 역활을 하는 디자인 패턴

예시 : 프록시 서버 > 클라이언트가 자신을 통해 네트워크에 서비스에 간접적으로 접속하게 한다

프록시 서버가 해결해주는 것: SOP정책으로 인해 웹브라우저에 리소스를 로드할 때 다른 오리진을 통해 로드를 못하게하는 HTTP 헤더 기반 매커니즘인 CORS를 프록시 서버를 통해서 해결한다.

6. 이터레이터 패턴

: 이터레이터를 컬렉션의 요소들에 접근하는 디자인 패턴입니다

7. 노출모듈 패턴

: 즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴입니다

내일 공부할 것

MVC, MVP, MVVM, 프로그래밍 패러다임

느낀점

오늘 공부한 패턴보다, 조별에 대해서 느낀점이 있었다.

어제 git을 공부를 하였지만, 미니 프로젝트가 눈앞에 있으니, git의 conflict가 더 크게 느껴졌고, 해결을 하기가 매우 어려웠다. git의 conflict가 있어도 잘 해결하는 방법에 대해서 좀더 검색해서 해결하는 능력을 갖춰야할 것 같다고 느꼈다.

'ConnecTo' 카테고리의 다른 글

2022/08/08 - TIL  (0) 2022.08.08
2022/08/05 - TIL  (0) 2022.08.05
2022/08/03 - TIL  (0) 2022.08.03
2022/08/02 TIL  (0) 2022.08.02
2022/08/01 TIL  (0) 2022.08.01