[TIL & assignment] 디자인패턴

열심히 사는 루피 🥰·2021년 8월 4일
0

생성패턴(객체가 생성, 변경되어도 프로그램 구조에 영향받지 않도록)

  1. 싱글톤 패턴(Singleton)

    • 클래스 내에 인스턴스 하나만 생성한다.
    • 하나의 객체를 생성하면 어디서든 참조할 수 있고, 여러 프로세스가 동시에 참조할 수 없다.
    • 불필요한 메모리 낭비가 없다.
  2. 추상팩토리 패턴(Abstract Factory)

    • 클래스에 의존하지 않고 인터페이스를 통해서 연관되는 객체들의 그룹으로 생성해 추상적으로 표현한다.
    • 연관된 서브 클래스를 묶어 한번에 교체가 가능
  3. 빌더 패턴(Builder)

    • 인스턴스를 건축하듯이 조합하여 객체를 생성한다.
  4. 팩토리 메소드 패턴(Factory Method)

    • 객체 생성을 서브 클래스에서 처리하도록 분리해 캡슐화한 패턴이다.
  5. 프로토타입 패턴(Prototype)

    • 원본 객체를 복제하는 방법으로 객체를 생성한다.

구조 패턴(클래스나 객체를 조합해 더 큰 구조로 만들 수 있게 하는 패턴들)

  1. 어댑터(Adapter)
    • 인터페이스를 다른 클래스가 이용할 수 있도록 변환 해주는 패턴
    • A 인터페이스의 a 함수를 구현해야하는데,,, B인터페이스의 b 함수에 그게 구현 되어있을때 => 그 사이를 변환해서 이어주는 경우
  2. 브리지(Bridge)
    • 구현부에서 추상층을 분리해 서로 독립적으로 확장하도록 구성한 패턴
  3. 컴포지트(Composite)
  4. 데코레이터(Decorator)
  5. 퍼싸드(Facade)
    • 어렵군ㅠㅠ
  6. 플라이웨이트(Flyweight)
    • 인스턴스가 필요할 때마다 매번 생성하지 않고, 가능한 공유해서 사용해 메모리를 절약하는 패턴
      -다수의 유사 객체 생성할때 유용
  7. 프록시(Proxy)
    • 사용하기 어려운 객체가 있을 때
    • 우선 대리인(대리 인터페이스)이 먼저 수행하고, 그 객체에 접근할 수 있거나 꼭 접근해야만 할때 실제 객체가 수행하도록 하는 패턴

행위 패턴(클래스나 객체들이 서로 상호작용하거나 책임분배하는 방법을 정의하는 패턴들)

결합도를 최소화하도록 도와준다.
  1. 책임 연쇄(Chain of Resposibility)

  2. 커맨드(Command)

    • 요청 자체를 객체의 형태로 저장하여 재사용하는 방식의 패턴
      -..?
  3. 인터프리터(Interpreter)

  4. 반복자(Iterator)

  5. 중재자(Mediator)

    • 특정 이벤트에 반응해서 관련된 다른 클래스들에 알려준다!
  6. 메멘토(Memento)

  7. 오브서버(Observer)

  8. 상태(State)

  • 객체 상태(ex. On, Off)에 따라 동일한 동작을 다르게 처리
  • 같은 인터페이스를 On, Off(상태)에 각자 implements해 동작 처리
  1. 전략(Strategy)

    • 여러 방법들을 a,b,c 등으로 정하고 필요할 때 원하는 전략을 사용하는 패턴
    • 옵션들마다 행동을 모듈화해서 독립적으로 작동하고 상호 교체 가능하게 만드는 것
    • 같은 인터페이스를 a,b,c 에 각자 implements해서 선택해 사용하는 식으로 구현할 수 있음
  2. 템플릿 메소드(Template Method)

    • 정해진
    • 공통된 절차를 효율적으로 코드를 작성하게 해준다.
    • 정해진 상속 형식 : 메인 메소드- 세부 메소드
  3. 방문자(Visitor)

https://refactoring.guru/design-patterns

profile
반가워_! 세상아!

0개의 댓글