소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것
자동차의 프레임(뼈대)
쉽게 바꿀 수 X
어떠한 목적을 달성하기 위해, 복잡하게 얽혀 있는 문제를 쉽게 해결하기 위한 약속, 도구
소프트웨어 개발에 하나의 뼈대 역할
자주 쓰일 만한 기능들을 한 데 모아놓은 유틸(클래스)들의 모음
예시 : 의자를 만들 때, 의자를 만드는 '망치', '못' 같은 개념
자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합
자동차의 기능을 하는 부품(차가 굴러갈 수 있게 하는 바퀴, 빛을 비추는 헤드라이트, 창문을 닦는 와이퍼)
쉽게 바꿀 수 O
이 둘의 차이점은 '제어 흐름의 권한'에 있습니다.
프레임워크는 애플리케이션의 코드가 프레임워크에 의해 사용됩니다.
애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고,
사용자가 그 안에 필요한 코드를 작성하게 됩니다.
라이브러리는 사용자가 애플리케이션 코드의 흐름을 직접 제어해야 합니다.
'프레임워크 & 라이브러리' 는 내가 원하는 기능을 쉽게 구현하기 위해, 외부에서 '프레임 & 부픔' 을 아웃소싱 맡기는 것.