ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 디자인패턴(1)
    CS지식 2023. 9. 4. 17:10

    디자인패턴

    • 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것
    • 라이브러리나 프레임워크를 만드는데 기초적인 원리가 되며 지금도 많은 라이브러리, 프레임워크가 어떠한 디자인패턴을 기반으로 만들어지고 있음

     

    디자인패턴의 의의

    • 디자인패턴들을 미리 배워 놓는다면 이걸 기반으로 여러 문제를 해결하는 데 있어서 영감을 받을 수 있음
    • 팀원들과 협업할 때 어떤 문제가 나타났을 때 "그 부분은 전략패턴"으로 하는 게 어떤가요?라고 했을 떼 빠른 의사소통이 가능

     

    디자인패턴의 종류

    • 디자인 패턴은 크게 생성패턴, 구조패턴, 행동패턴 3가지로 나눠짐
      • 생성패턴 : 객체 생성 방법이 들어간 디자인패턴
        ex) 싱글톤, 팩토리, 추상팩토리, 빌더, 프로토타입패턴
      • 구조패턴 : 객체, 클래스 등으로 큰 구조를 만들 때 유연하고 효율적으로 만드는 방법이 들어간 디자인패턴
        ex) 프락시, 어댑터, 브리지, 복합체, 데코레이터, 퍼사드, 플라이웨이트패턴
      • 행동패턴 : 객체나 클래스 간의 알고리즘, 책임 할당에 관한 디자인패턴
        ex)이터레이터, 옵저버, 전략, 책임연쇄, 커맨드, 중재자, 메멘토, 상태, 템플릿메서드, 비지터패턴

     

    라이브러리

    • 공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것
    • 폴더명, 파일명 등에 대한 규칙이 없고 프레임워크에 비해 자유로움
    • ex) 자동차, axios

     

    프레임워크

    • 공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것
    • 폴더명, 파일명 등에 대한 규칙이 있으며 라이브러리에 비해 좀 더 엄격함
    • ex) 비행기, vue.js, Django

     

    싱글톤패턴

    • 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴
    • 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만
      그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어
      이를 기반으로 로직을 만드는데 쓰이며 보통 데이터베이스 연결모듈에 많이 사용
    • 장점
      • 하나의 인스턴스를 기반으로 해당 인스턴스를 다른 모듈들이 공유하여 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄음
      • "인스턴스 생성에 많은 비용"이 드는 I/O 바운드 작업에 많이 사용
    • 단점
      • 의존성이 높아지며 TDD(Test Driven Development)를 할 때 걸림돌이 됨
        (TDD를 할 때 단위 테스트를 주로 하는데,
        단위 테스트는 테스트가 서로 독립적이어야 하며 테스트를 어떤 순서로든 실행할 수 있어야 함)
      • 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로
        각 테스트마다 '독립적인' 인스턴스를 만들기 어려움

    'CS지식' 카테고리의 다른 글

    디자인패턴(2)  (0) 2023.09.05
    개발자 기본지식  (0) 2023.09.02
    CI/CD  (0) 2023.09.02
    클라우드  (0) 2023.08.31
    API  (1) 2023.08.29

    댓글

Designed by Tistory.