설계 원칙과 OOP
SOLID와 객체지향을 코드 변화의 관점으로 읽습니다.
DESIGN · 71 ARTICLES
좋은 설계는 패턴 이름을 많이 아는 것보다 변화 비용을 줄이는 판단에서 시작합니다. 객체지향 원칙과 디자인 패턴, 의존성, 모듈화를 하나의 흐름으로 정리합니다.
주제 지도
SOLID와 객체지향을 코드 변화의 관점으로 읽습니다.
문제와 트레이드오프를 기준으로 패턴을 구분합니다.
DI와 결합도를 다루는 구체적인 방법을 익힙니다.
응집도와 경계를 기준으로 시스템을 나눕니다.
처음 읽기
기초 개념에서 다음 단계로 자연스럽게 이어지는 글을 골랐습니다.
면접에서 "SOLID 원칙 설명해보세요"라는 질문, 다들 한 번쯤 받아보셨을 거예요.
읽어보기프로젝트가 커질수록 파일 하나 고치는 게 점점 무서워집니다. 어디까지 영향이 퍼지는지 가늠이 안 되니까요.
읽어보기전체 글
"조기 최적화는 만악의 근원"이라는 크누스의 문장은 뒷부분이 잘린 인용입니다. 97%는 잊고 3%에 집중하라는 원문 맥락과, 프로파일러로 병목을 확인한 뒤 최적화하는 실무 기준을 정리했습니다.
읽어보기Factory는 의존성 등록 누락을 컴파일 타임에 잡아내는 Swift DI 라이브러리입니다. 2026년 7월 기준 3.3.1로 기본 사용법과 스코프 선언, 테스트·프리뷰 주입, Swinject와의 차이를 정리했습니다.
읽어보기프로토콜 지향 프로그래밍(POP)은 무엇을 상속받았는지가 아니라 무엇을 할 수 있는지로 타입을 설계합니다. 상속이 막히는 지점과 프로토콜 조합으로 푸는 방법, 피해야 할 경우까지 Swift 예제로 정리했습니다.
읽어보기미디에이터는 얽힌 객체 관계를 중앙에서 조정하고, 옵저버는 상태 변화를 일대다로 알리며, 퍼사드는 복잡한 내부를 단순한 창구로 감쌉니다. 세 패턴의 차이와 선택 기준을 Swift 예제로 비교했습니다.
읽어보기DI·IoC·DIP는 층위가 다른 개념입니다. DIP는 무엇에 의존할지 정하는 원칙, IoC는 제어권을 누가 갖는지의 방향, DI는 의존성을 넣어주는 기법이라는 구분을 예제와 면접 답변까지 정리했습니다.
읽어보기코드 리뷰에서 "이 클래스에 final 좀 붙여주세요" 같은 말, 한 번쯤 들어보셨을 거예요.
읽어보기GoF 팩토리 메서드는 객체 하나의 구체 타입 결정을 서브클래스에 맡기고, 추상 팩토리는 관련 객체 제품군을 함께 생성합니다. 두 패턴의 의도와 선택 기준을 Swift 예제로 비교합니다.
읽어보기어댑터는 인터페이스 변환, 퍼사드는 복잡성 은닉, 프록시는 접근 통제, 데코레이터는 기능 추가가 목적입니다. 구조가 닮은 네 래핑 패턴을 의도와 선택 기준으로 비교합니다.
읽어보기