본문 바로가기
소프트웨어공학

SOLID 원칙 객체지향 설계 패턴 정리

by 매일기술사 2026. 3. 18.
SW Engineering · 한장정리

[기술사토픽] SOLID 원칙 & 설계 패턴 완벽 정리 - 한장정리

SOLID 5원칙 정의와 위반 사례, 응집도·결합도 단계, GoF 디자인 패턴 23가지 분류까지 정보관리기술사·컴퓨터시스템응용기술사 빈출 주제를 완벽 정리합니다.

SOLID GoF패턴 응집도 결합도 정보관리기술사

Ⅰ.좋은 소프트웨어 설계의 원칙, SOLID의 개요

개념: SOLID는 Robert C. Martin(Uncle Bob)이 정립한 객체지향 설계의 5가지 핵심 원칙으로, 유지보수성·확장성·재사용성이 높은 소프트웨어를 만들기 위한 설계 지침입니다.

목표: 높은 응집도(High Cohesion) + 낮은 결합도(Low Coupling) 달성 → 변경에 강한 유연한 설계

S
단일 책임 원칙 (SRP)
Single Responsibility Principle
클래스는 변경의 이유가 하나여야 한다. 하나의 클래스 = 하나의 책임. 위반 시 하나의 변경이 다른 기능에 영향을 줌.
O
개방-폐쇄 원칙 (OCP)
Open-Closed Principle
확장에는 열려 있고, 변경에는 닫혀 있어야 한다. 기존 코드 수정 없이 새 기능 추가 가능해야 함.
L
리스코프 치환 원칙 (LSP)
Liskov Substitution Principle
자식 클래스는 부모 클래스를 대체할 수 있어야 한다. 다형성의 올바른 사용. Barbara Liskov 제안.
I
인터페이스 분리 원칙 (ISP)
Interface Segregation Principle
클라이언트는 사용하지 않는 인터페이스에 의존하지 않아야 한다. 큰 인터페이스를 작게 분리.
D
의존역전 원칙 (DIP)
Dependency Inversion Principle
고수준 모듈이 저수준 모듈에 의존하면 안 된다. 둘 다 추상화(인터페이스)에 의존해야 함.
암기 팁

Single · Open-Closed · Liskov · Interface · Dependency — 앞글자를 따서 SOLID

Ⅱ.응집도 & 결합도 — 모듈 설계의 핵심 척도

좋은 설계 = 높은 응집도 + 낮은 결합도. 응집도는 모듈 내부 요소들의 연관성, 결합도는 모듈 간 의존성의 강도를 의미합니다.

가. 응집도 (강 → 약, 7단계)
⬅ 강한 응집 (좋음) 약한 응집 (나쁨) ➡
기능적
순차적
통신적
절차적
시간적
논리적
우연적
나. 결합도 (약 → 강, 6단계)
⬅ 약한 결합 (좋음) 강한 결합 (나쁨) ➡
자료
스탬프
제어
외부
공통
내용
시험 포인트

응집도 순서: 기·순·통·절·시·논·우 (기능→순차→통신→절차→시간→논리→우연) 암기 필수!

Ⅲ.GoF 디자인 패턴 23가지 분류

GoF(Gang of Four)는 Gamma, Helm, Johnson, Vlissides 4인이 정립한 23가지 디자인 패턴입니다. 생성·구조·행위 3가지로 분류됩니다.

생성 패턴 (5가지)
Singleton — 인스턴스 1개 보장
Factory Method — 객체 생성 서브클래스 위임
Abstract Factory — 관련 객체군 생성
Builder — 복잡한 객체 단계별 생성
Prototype — 복제로 객체 생성
구조 패턴 (7가지)
Adapter — 인터페이스 변환
Bridge — 구현과 추상 분리
Composite — 트리 구조 표현
Decorator — 기능 동적 추가
Facade — 단순 인터페이스 제공
Flyweight — 공유로 메모리 절약
Proxy — 대리 객체 제공
행위 패턴 (11가지)
Observer — 상태 변화 통보
Strategy — 알고리즘 캡슐화
Template Method — 알고리즘 골격 정의
Command — 요청 객체화
Iterator — 순차 접근
State — 상태별 행위 변경
Chain of Resp. — 책임 사슬
Mediator — 객체 간 통신 중재
Memento — 상태 저장·복원
Visitor — 알고리즘 분리
Interpreter — 문법 해석
시험 포인트

생성 5개 · 구조 7개 · 행위 11개 = 총 23가지 암기. 기출은 Singleton, Observer, Strategy, Facade, Factory 위주로 출제.

Ⅳ.결론 및 전문가 의견

결론

SOLID 원칙과 GoF 패턴은 객체지향 설계의 핵심 지식으로, 유지보수성과 확장성을 높이는 실전 도구입니다.
향후 마이크로서비스 아키텍처, 클린 아키텍처, DDD(도메인 주도 설계)와 결합되어 현대 소프트웨어 설계의 근간으로 발전하고 있습니다.

"SOLID는 코드를 '변경하기 쉽게' 만드는 원칙이고, GoF 패턴은 검증된 '설계 어휘'다. 둘을 함께 이해해야 진정한 객체지향 설계가 가능하다."

블로그: 기술사 학습노트 · imt-log.tistory.com