출근길 공부 - 디자인패턴

🐳ㅇㅡㄴㄱㅓ·2022년 9월 4일
0

출근길공부

목록 보기
1/4

디자인패턴

싱글톤 패턴(Singleton pattern)

  • 하나의 클래스에 오직 하나의 인스턴스만 가짐
  • 인스턴스 생성할 때 만드는 비용은 줄어들고 의존성은 높아짐
  • TDD(Test Driven Development)를 할 때 걸림돌이 됨. 각 테스트마다 독립적인 인스턴스를 만들기 어렵기 때문
  • EX) 데이터베이스 연결 모듈

팩토리 패턴(Factory pattern)

  • 객체 생성 부분을 떼어내 추상화하는 패턴
  • 상위클래스가 중요한 뼈대 결정, 그 클래스를 상속받는 하위클래스에서 객체 생성에 관한 구체적인 내용 결정
  • 느슨한 결합, 더 많은 유연성

전략 패턴(Strategry pattern)

  • = 정책패턴(Policy pattern) 동일
  • 객체의 행위를 바꾸고 싶은 경우 직접 수정하지않고 캡슐화한 알고리즘을 컨텐스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴
  • 글로 볼 땐 이해안됐는데 샘플보니 한번에 이해됨.
  • EX) Passport

옵저버 패턴(Observer pattern)

  • 어떤 객체의 상태 변화를 관찰하다가 변화가 있을 때마다 메서드등을 통해 변화를 알려주는 패턴
  • 예를 들면 트위터 서비스
  • 주로 이벤트 기반 시스템에 사용, MVC 패턴에도 사용

번외. 상속과 구현

상속 extends

  • 자식 클래스가 부모 클래스의 메서드 등을 상속받아 사용. 추가 및 확장을 할 수 있는 것
  • 재사용성, 중복성의 최소화
  • 일반, abstract 클래스를 기반

구현 implements

  • 부모 인터페이스를 자식 클래스에서 재정의하여 구현
  • interface를 기반

프록시 패턴(Proxy pattern)

  • 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 앞단의 인터페이스 역할을 하는 패턴
  • EX) 보안, 데이터 검증, 캐싱, 로깅에 사용

이터레이터 패턴(Iterator pattern)

  • 이터레이터를 사용하여 컬렉션의 요소들에 접근
  • 이터레이터 프로토콜 : 이터러블한 객체들을 순회할 때 쓰이는 규칙
  • 이터러블한 객체 : 반복가능한 객체로 배열을 일반화한 객체

노출모듈 패턴(Revealing modulen pattern)

  • 즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴
  • EX) CommonJS
  • 자바스크립트는 private, public 같은 접근 제어자가 존재하지 않고 전영 범위에서 스크립트가 실행되기 때문에 노출모듈 패턴을 통해 구현하기도 함.
  • public : 클래스에 정의된 함수에서 접근 가능, 자식/외부에서 접근 가능한 범위
    protected : 클래스에 정의된 함수에서 접근 가능, 자식 클래스에서만 접근 가능
    private : 클래스에 정의된 함수에서 접근 가능, 자식/외부에서 접근 불가
    즉시 실행 함수 : 함수를 정의하자마자 바로 호출하는 함수

MVC 패턴

  • 모델, 뷰, 컨트롤러로 이루어진 패턴
    모델 : 데이터베이스, 상수, 변수
    뷰 : 사용자 인터페이스 요소, 모델을 기반으로 사용자가 볼 수 있는 화면, 변경이 일어나면 컨트롤러에 이를 전달
    컨트롤러 : 모델과 뷰를 잇는 다리 역할
  • 구성 요소를 세가지 역할로 구분하여 각각의 구성 요소만 집중해서 개발 가능
  • 재사용성과 확장성이 용이, 애플리케이션이 복잡해질수록 모델과 뷰의 관계도 복잡해짐

MVP 패턴

  • MVC패턴으로부터 파생되었으며 C에 해당하는 컨트롤러가 프레젠터로 교체된 패턴
  • 뷰와 프레젠터가 일대일 관계이기 때문에 MVC 패턴보다 더 강한 결합을 지닌 패턴

MVVM 패턴

  • MVC의 C에 해당하는 컨트롤러가 뷰모델로 바뀐 패턴
  • 뷰모델은 뷰를 더 추상화한 계층, 커맨드와 데이터 바인딩을 가짐.
  • Vue.js가 대표적인 MVVM 프레임워크
profile
재활훈련 중

0개의 댓글