객체 지향 디자인 패턴

Y39·2023년 3월 12일
0

toBeProgrammer

목록 보기
29/88

Singleton

  • 객체를 단 하나만 사용해야 하는 경우 ex) 세팅 변수
  • static을 써서 값을 저장
  • 객체가 생성되어 있다면 계속 같은 객체를 return

Strategy

  • 모드를 바꿀 때마다 기능이 변경되는 것을 구현 한다고 가정
  • strategy 패턴이 없다면 각 기능을 구현해 놓고, 유지보수도 매 기능마다 적용 해야함 => 매우 비효율
  • strategy 방식은 모드를 바꿔 끼운다는 컨셉

State

  • strategy 방식과 비슷
  • 둘의 차이점
  • state: 상태마다 할일(켜진 상태, 꺼진 상태) + 상태도 바꿈
  • strategy: 모드마다의 기능

Command

  • strategy 방식과 비슷
  • 둘의 차이점
    • command: 일 자체가 변경 => command에 따라 다른 일
    • strategy: (검색) 동일한 일을 하고, 모드를 갈아끼우는 형식

Adapter

  • 변수, 메소드, 인터페이스가 다를 때 중간에서 변환해주는 것

Proxy

  • 실제 작업을 모두 실행하기 보단, 대리자(가벼운)를 먼저 보내서 빠른 서비스가 가능하도록
  • 대표적인 예가 유튜브 미리보기
    • 제목, 썸네일은 가벼워서 proxy로 제공
    • 미리 보기는 동영상을 불러 오는 것이기 때문에, 실제 작업을 요청

Facade

  • 사용자 측에서 복잡한 내부관계를 알 필요 없이 메소드로 간단히 실행할 수 있도록 하는 방법

Template

  • 큰 틀을 정해놓고 그것을 상속받은 자식은 상세하게 구현하는 것
    => 상속이라고 생각하면 편함

Decorator

  • 기존에 있는 것에서 추가로 기능을 달아 놓는 것
    ex. 아이템을 먹으면 기존 공격+ 추가 공격

Factory

  • 클래스가 많고 복잡할 때 객체가 parameter을 확인하고 알아서 생성해주는 것

Abs.Factory

  • factory에 추상화를 입힌 것
  • factory가 다양해졌을 때, 그것을 상속해서 다양한 factory를 만들 수 있도록 하는 것.

Mediator

  • 클래스끼리 연결되었을 때 변동이 생기면 알려주는 클래스 기법
  • 중간에서 변동을 해주는 객체를 이용하는 것

Composite

  • 종류가 다르더라도 포함되는 것과 포함하는 것을 같은 방식으로 다루는 기법
profile
System.out.print("Bold")

0개의 댓글