resetmerlin / Object-Oriented-Programming

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Object-Oriented-Programming

SRP를 준수하는 객체망이 문제를 해결

단일 책임 원칙을 준는하는 객체에게 책임 이상의 업무를 부여하면?

  1. 만능 객체가 되낟한다
  2. 다른 객체에게 의뢰한다.

다른 객체에게 의뢰하는 것 = 다른 객체에게 메세지를 보내는 것

  1. 메세지 - 의뢰할 내용
  2. 오퍼레이션 - 메세지를 수신할 객체가 제공하는 서비스
  3. 메소드 - 오퍼레이션이 연결된 실제 처리기

Dependency

의존성의 종류

객체의 생명 주기 전체에 걸친 의존성

  • 상속(extends)
  • 연관(association)

각 오포레이션 실행 시 임시적인 의존성

  • 의존(dependency)

의존성이 있으면

  1. 수정 여파 규모 증가
  2. 수정하기 어려운 구조 생성
  3. 순환 의존성

Dependency Inversion

어떠한 경우에도 다운 캐스팅은 금지 폴리모피즘(추상 인터페이스) 사용

IoC(Inversion of Control)

제어역전의 개념과 필요성

개념

  1. Control = flow control(흐름제어)
  2. 광의에서 흐름 제어 = 프로그램 실행 통제
  3. 동기흐름제어, 비동기 흐름제어 등

문제점

  1. 흐름 제어는 상태와 결합하여 진행됨
  2. 상태 통제와 흐름제어 = 알고리즘
  3. 변호에 취약하고 구현하기도 어려움

즉 내가 운전하는 것보다 사수가 운전는는게 낫다 => 제어 역전

대안

  1. 제어를 추상화하고
  2. 개별 제어의 차이점만 외부에서 주입받는다.

제어역전 실제 구현

전략 패턴 & 템플릿 메소드 패턴 < 컴포지트 패턴 < 비지터 패턴보다 넓은 범위의 제어 역전을 실현함

추상 팩토리 메소드 패턴 왼쪽 패턴은 이미 만들어진 객체의 행위를 제어역전에 참여시킬 수 있지만 참여할 객체 자체를 생성할 수 없음. 참여할 객체를 상황에 맞게 생성하고 행위까지 위임하기 위해 추상팩토리 메소드를 사용함

About


Languages

Language:JavaScript 100.0%