ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기술 면접 - 디자인 패턴
    기술 면접 2021. 4. 21. 01:57

    디자인 패턴이란?


    • 자주 사용하는 설계 패턴을 정형화 해서 이를 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계
    • 알고리즘과 유사하지만, 명확하게 정답이 있는 형태는 아니며, 프로젝트의 상황에 맞추어 적용 가능

    생성 패턴

    • 객체를 생성하는 것과 관련된 패턴으로, 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화 하고, 코드의 유연성을 높여준다
    • Factory Method
    • Singleton
    • Prototype
    • Builder
    • Abstract Factory

    구조 패턴

    • 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 활용될 수 있는 패턴
    • 클래스, 객체들의 구성을 통해서 더 큰 구조를 만들 수 있게 해준다
    • Adapter
    • Composite
    • Bridge
    • Decorator
    • Facade
    • Proxy

    행위 패턴

    • 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로, 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 제공함
    • Template Method
    • Interpreter
    • Iterator
    • Observer
    • Strategy

    Singleton Pattern(**)


    • Singleton 패턴은 어떠한 클래스가 유일하게 1개만 존재할 때 사용함

    image

    • 디폴트 생성자를 막는다
    • static으로 getInstance()를 만든다
    • Instance가 Null인 경우 새로 생성

    Adapter Pattern


    • 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용 할 수 있도록 함

    image

    • 인터페이스끼리 호환시키려고 할 때, 중간에 Adapter 클래스를 만들어서 사용함

    Proxy Pattern


    • Proxy는 대리인이라는 뜻, 뭔가를 대신해서 처리하는 것
    • Proxy Class를 통해서 대신 전달하는 형태로 설계되며, 실제 Client는 Proxy로부터 결과를 받음
    • Cache의 기능으로도 활용 가능
    • Spring에서 Proxy를 이용해 AOP를 구현했다

    image

    Observer Pattern


    • 관찰자 패턴은 변화가 일어났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것
    • Event listener에서 이런 패턴을 사용하고 있음

    image

    Facade Pattern(**)


    • Facade는 건물의 앞쪽 정면이라는 뜻
    • 여러 개의 객체와 실제 사용하는 서브 객체의 사이에 복잡한 의존 관계가 있을 때, 중간에 facade라는 객체를 두고 Interface만을 활용하여 기능을 사용하는 방식

    image

    image

    • 원래는 개별로 의존성 관리를 해야하는데, 한 곳에 모아서 관리한다

    Strategy Pattern(*****)


    • 객체 지향의 핵심
    • 유사한 행위들을 캡슐화하여, 객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아닌 전략만 변경하여 유연하게 확장하는 패턴

    image

    • 기본 Encoder는 그대로 두고, 전략만을 바꿔 넣어서 결과 값을 다르게 만든다!
    • 전략 메서드를 가진 전략 객체(Normal Strategy , Base64 Strategy)
    • 전략 객체를 사용하는 컨텍스트 ( Encoder )
    • 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트

    댓글

Designed by Tistory.