객체 지향 디자인 패턴

hznnoy·2025년 10월 5일

CS

목록 보기
16/24

디자인 패턴이란?

객체 지향 프로그래밍(OOP)의 기본 원칙을 바탕으로, 소프트웨어 설계에서 반복적으로 발생하는 문제들을 해결하기 위한 검증된 해법을 정리한 것

객체 지향 프로그래밍(OOP)의 특징

추상화

복잡한 시스템에서 핵심적인 속성이나 기능만을 추출하여 간결하게 표현하는 것
불필요한 세부사항을 제거하고 본질적인 기능에 집중한다.

캡슐화

데이터(속성)와 그 데이터를 다루는 함수(메서드)를 하나의 객체로 묶어 외부 접근을 통제해 객체의 내부 구현을 숨가는 것
정보 은닉 및 낮은 결합도를 유지할 수 있다.

상속

이미 존재하는 클래스(부모, 상위 클래스)의 속성과 기능을 물려받아 새로운 클래스(자식, 하위 클래스)를 정의하는 것
코드의 재사용성을 높인다.

다형성

하나의 이름이나 인터페이스가 상황에 따라 다른 방식으로 동작하는 것
상속과 오버라이딩을 통해 구현한다. 유연한 설계의 핵심 요소.

객체 지향 설계의 5가지 기본 원칙 : SOLID

SOLID 원칙은 객체 지향 설계의 핵심 원칙으로, 유연하고 확장 가능하며 유지보수가 쉬운 소프트웨어를 만들기 위한 기반이 된다.

1. 단일 책임 원칙 (Single Responsibility Principle, SRP)
한 클래스는 단 하나의 책임만 가져야 하며, 클래스를 변경하는 이유는 오직 하나여야 한다.

2. 개방-폐쇄 원칙 (Open-Closed Principle, OCP)

소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.
즉, 기능 확장 시 기존 코드를 수정하지 않아야 한다.

3. 리스코프 치환 원칙 (Liskov Substitution Principle, LSP)

상위 타입 객체는 하위 타입 객체로 치환되어도 프로그램의 정확성이 유지되어야 한다.
즉, 자식 클래스는 부모 클래스의 역할을 완전히 수행할 수 있어야 한다.

4. 인터페이스 분리 원칙 (Interface Segregation Principle, ISP)

클라이언트는 자신이 사용하지 않는 메서드에 의존해서는 안 된다.

5. 의존 역전 원칙 (Dependency Inversion Principle, DIP)

고수준 모듈은 저수준 모듈이 아닌 추상화(인터페이스나 추상클래스)에 의존해야 한다.

디자인 패턴의 분류

범주설명주요 패턴 예시
생성 패턴객체의 생성과정을 캡슐화, 추상화하며, 객체의 생성 로직을 시스템과 분리하는 패턴싱글톤 (Singleton)
팩토리 메서드 (Factory Method)
빌더(Builder)
구조 패턴클래스나 객체들을 조합하여 더 크고 새로운 구조를 만드는 패턴어댑터(Adapter)
데코레이터(Decorator)
파사드 (Facade)
행위 패턴객체나 클래스 간 책임 분배나 상호작용 방식을 정의하여 복잡한 제어 흐름을 관리하는 패턴전략(Strategy)
옵저버(Observer)
커맨드(Command)

[이미지 출처] https://modulabs.co.kr/blog/oop-solid

profile
노력에는 지름길이 없으니까요

0개의 댓글