[CS] CS전공지식_디자인 패턴과 프로그래밍 패러다임

본 문서는 면접을 위한 CS 전공지식 노트 필기를 바탕으로 작성되었습니다

디자인 패턴과 프로그래밍 패러다임

라이브러리 : 공통으로 사용될 수 있는 기능들을 모듈화한 것을 의미

폴더명, 파일명 등에 대한 규칙이 없고, 프레임 워크에 비해 자유롭다

프레임 워크: 공통으로 사용될 수 있는 기능들을 모듈화한 것을 의미

폴더명, 파일명 등에 대한 규칙이 있으며 라이브러리에 비해 좀 더 엄격

디자인 패턴

프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것을 의미

싱글톤 패턴

하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴

  • 장, 단점
    • 장점 : 인스턴스 생성 비용 감소
    • 단점 : 의존성의 높아짐, TDD가 힘들어서 테스트마다 독립적인 인스턴스르 만들 수가 없다
  • 데이터베이스 연결모듈, 게임 매니저 등에 사용한다

  • 의존성 주입 (DI, Dependency Injection)
    • 모듈간의 결합을 조금 더 느슨하게 만들어서 싱글톤 패턴의 단점을 상쇄할 수 있다
    • 메인 모듈이 직접 다른 하위 모듈에 대한 의존성을 주기보다는 중간에 의존성 주입자(dependency injector)가 이 부분을 가로채 메인 모듈이 간접적으로 의존성을 주입하는 방식
    • 모듈을 쉽게 교체할 수 있는 구조가 되어 테스팅하기 쉽고 마이그레이션하기 수월함
    • 구현시 추상화 레이어를 넣고 이를 기반으로 구현체를 넣어주기 때문에 애플리케이션 의존성 방향이 일관되고, 애플리케이션을 쉽게 추론할 수 있으며, 모듈 간의 관계들이 명확해짐
    • 모듈들이 더욱더 분리되므로 클래스 수가 늘어나 복잡성이 증가될 수 있으며 약간의 런타임 패널티가 생김
    • 의존성 주입 원칙
      • 상위 모듈은 하위 모듈에서 어떠한 것도 가져오지 않아야 한다. 또한 둘 다 추상화에 의존해야 하며, 이때 추상화는 세부 사항에 의존하지 말아야 한다

팩토리 패턴

클래스의 인스턴스를 만드는 일을 서브 클래스에게 맡기는 패턴

  • 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴
  • 상위클래스 : 중요한 뼈대 결정
  • 하위클래스 : 객체 생성에 대한 구체적인 내용을 가짐

© 2023 Jinsoo Lee. All rights reserved.

Powered by Hydejack v9.1.6