Study note/CS

디자인 패턴 1

공대 아로마 2024. 4. 12. 17:07

기술면접을 위해 기초 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