기술면접을 위해 기초 CS에 대한 복습중이다.
공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다.
내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의!
Singleton 패턴
- setting처럼 object을 딱 하나만 생성해야할 때 이 패턴을 사용
- 생성자를 private으로 선언 => 다른 클래스에서 new로 생성 못하게 하기 위함
- static으로 자기 자신의 객체 만들기: 정해진 공간에 하나만 생성하도록
- 구현 방법: 다른 클래스에서 get할 때 처음에만 new로 만들고, 다음부터는 만들어놓은 object을 get
Strategy 패턴
- Interface로 공통적인 기능을 만들 수 있게
- 다른 옵션들을 각각의 클래스로 만들고, set으로 옵션을 변경하는 방식으로 구현
- 옵션들마다 행동을 모듈화해서 독립적이고 상호교체가 가능하게 만들 수 있음
State 패턴
- 기본적으로는 Strategy 패턴과 비슷하나,
onSwitch()
를 이용하는 등 toggle하는 함수를 만들어서 상태를 바꿔주는 함수(set다른모드)도 포함시켜준다.
Command 패턴
- abstract 클래스로 상속해서 여러 command를 만드는 방식
- 여러 command를 list형태로 받아서 실행하도록 구현할 수 있다.
- 혹은, Strategy, State 패턴처럼 interface로 구현하되,
execute()
로 다른 명령을 하도록 구현 가능(Strategy는 같은 명령을 옵션을 달리한 방식)
Adapter 패턴
- Interface나 그 내부 함수 방식이 다른데 합쳐야 할 때 사용
- Adapter로 감싸서 기존 방식과 호환되도록 만드는 방식
- Interface든 Abstract이든 형식이 다르면 결국엔 같게끔 만들어줘야 한다.
- 겉모습은 기존처럼, 내부는 새로 가져오는 걸 실행하도록 Adapter로 감싼다.
Proxy 패턴
- 가벼운 작업일 땐 굳이 무거운 작업을 하지 않게 하기 위해 Proxy(대리인)을 만들어놓는 방식
- 권한이 필요한 부분이나 무거운 부분을 분리해서 생각할 수 있음
- Proxy 클래스에서는 가벼운 건 직접 하고, 무거운 건 실제로 생성하진 않고 주체클래스를 불러온다.
- 무거운 것이 필요할 때 처음에만 주체클래스를 불러 객체를 생성하고, 이미 있을 땐 그 객체를 이용한다.
- 평소에는 proxy로 가벼운 일만, 필요할 때에만 객체를 생성하는 방식 => 효율적/유연한 구현 가능
참고한 사이트
- 유튜브 채널 얄팍한 코딩사전
'Study note > CS' 카테고리의 다른 글
객체지향 프로그래밍 OOP (0) | 2024.04.12 |
---|---|
디자인 패턴 2 (0) | 2024.04.12 |
네트워크 (0) | 2024.04.12 |
DB 데이터베이스 (0) | 2024.04.12 |
개발 상식 (0) | 2024.04.12 |