성장에 목마른 코린이

TIL 220815 (면접을 위한 CS 전공지식 노트 1 - 43) 본문

Today I Learned

TIL 220815 (면접을 위한 CS 전공지식 노트 1 - 43)

성장하는 코린이 2022. 8. 15. 22:03
728x90

오늘의 계획

1. 오전 10:00 - 12:00 이력서 2군데 제출하기 / 기업 분석

2. 오후 1:00 - 3:00 운동 PT 및 개인 운동

3. 면접을 위한 CS 전공지식 노트 중요한 내용 기록하기!

4. Typescript 강의 끝내기!

5. 프로그래머스 문제 풀기!

싱글톤 패턴(singleton pattern): 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴

 

싱글톤 패턴은 사용하기가 쉽고 굉장히 실용적입니다.

데이터베이스 연결 모듈에 많이 쓰입니다.

싱글톤 패턴을 이용해 데이터베이스 연결에 관한 인스턴스 생성 비용을 아낄 수 있습니다.

 

싱글톤 패턴의 단점:

TDD(Test Driven Development)를 할 때 걸림돌이 됩니다.

싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로

각 테스트마다 독립적인 인스턴스를 만들기가 어렵습니다.

 

팩토리 패턴(factory pattern): 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자

상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고,

하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴입니다.

 

상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기에 더 많은 유연성을 갖게 됩니다.

그리고 리팩토링 하더라도 한 곳만 고치면 되니 유지 보수성이 증가 됩니다.

 

전략 패턴 (strategy pattern): 객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 전략이라고 부르는

캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴입니다.

 

전략 패턴을 활용한 라이브러리: passport

제가 프로젝트때 OAuth 구현할 때 사용했던 미들웨어인데요,

여러가지 전략을 기반으로 인증할 수 있게하는 친구입니다.

 

옵저버 패턴 (observer pattern): 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다

메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴입니다.

 

여기서 주체란 객체의 상태 변화를 보고 있는 관찰자이며,

옵저버들이랑 이 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로

추가 변화 사항이 생기는 객체들을 의미합니다.

 

옵저버 패턴을 활용한 서비스로는 트위터가 있습니다.

어떤 사람인 주체를 팔로우 했다면 주체가 포스팅을 올리게 되면 알림이 팔로워에게 가야겠죠?

 

또한, 옵저버 패턴은 주로 이벤트 기반 시스템에 사용하며 MVC 패턴에도 사용됩니다.

예를 들어 주체라 볼 수 있는 모델에서 변경 사항이 생겨 update() 메서드로

옵저버인 뷰에 알려주고 이를 기반으로 컨트롤러 등이 작동하는 것입니다.

상속과 구현

상속(extends): 자식 클래스가 부모 클래스의 메서드 등을 상속받아 사용하며 자식 클래스에서

추가 및 확장을 할 수 있는 것을 말합니다. 이로 인해 재사용성, 중복성의 최소화가 이루어집니다.

 

구현(implements): 부모 interface를 자식 클래스에서 재정의하여 구현하는 것을 말하며,

상속과는 달리 반드시 부모 클래스의 메서드를 재정의하여 구현해야 합니다.

 

상속은 일반 클래스, abstract 클래스를 기반으로 구현하며, 구현은 인터페이스를 기반으로 구현합니다.

 

오늘의 회고

오늘은 Typescript 로 블록체인 만들기 강의를 끝마쳤습니다.

원래 토요일 조금하고 일요일 마무리 하려했는데,

일요일날 잠시 어디 가야할일이 생겨 오늘 마무리하게 되었습니다.

그리고 오늘 첫 PT를 시작했는데, 힘들어 죽을뻔 했네요 ..

앞으로 30회 PT 지옥 같겠지만 살도 많이빼고 체력도 길러보겠습니다!

오늘 코딩테스트 레벨 2 문제를 한번 도전해봤는데요!

한문제는 구글링을 통해 풀었지만 다른 문제는 문제 이해가 조금 어려워서 내일 해볼까합니다

앞으로는 레벨 2 문제를 도전해볼것같네요!

Comments