2025/05/22 3

팩토리 vs 추상 팩토리 패턴

1. 객체 생성의 유연성을 위한 패턴들1-1. 생성 패턴이 중요한 이유 객체 지향 프로그래밍에서 가장 먼저 부딪히는 설계 과제가 바로 객체 생성이다. 언뜻 보면 단순한 new 연산자만으로 충분해 보이지만, 규모가 커질수록 이 단순한 생성 방식이 구조를 경직시키고 테스트를 어렵게 만든다. 예를 들어, 어떤 객체를 생성하려면 내부 구성 객체들도 같이 생성해야 하고, 그에 따른 환경 설정도 초기화해야 한다면, 생성자가 너무 복잡해지고 객체 간의 의존성이 코드 깊숙이 박히게 된다. 이런 상황에서 등장하는 것이 팩토리 패턴이다. 객체 생성 자체를 캡슐화하고, 클라이언트는 객체를 사용하는 데만 집중할 수 있도록 설계한다. 팩토리 패턴은 특히 확장 가능한 구조, 느슨한 결합, 의존성 주입의 유연성이라는 측면에서 필수..

컴퓨터공학 2025.05.22

디자인 패턴 총정리

1. 디자인 패턴이란 무엇인가?1-1. 소프트웨어 설계의 재사용 가능한 해법 디자인 패턴은 단순한 코드 템플릿이 아니다. 그것은 반복되는 문제에 대해 검증된 해결책을 구조화한 설계 전략이다. 건축에서 ‘문을 여닫기 위한 구조’, ‘복층 구조를 위한 계단’ 등의 해법이 있는 것처럼, 소프트웨어에도 문제가 생겼을 때 ‘이럴 땐 이렇게 푼다’는 공통된 해결 틀이 필요하다. 이러한 해결 틀을 공식화한 것이 바로 디자인 패턴이다. 실무에서는 특정한 상황에서 “이걸 어떻게 풀지?”보다, “이 문제는 전략 패턴으로 풀 수 있어”라고 생각하는 것이 설계자 수준의 사고다. 이처럼 디자인 패턴은 단순 구현이 아니라 설계 관점의 레벨을 높이는 도구다.1-2. 패턴은 왜 중요한가? 디자인 패턴의 핵심 가치는 공통 언어와 설..

컴퓨터공학 2025.05.22

SRP vs OCP, 실제 적용 사례

1. 이론과 현실 사이의 간극1-1. SRP와 OCP는 언제 충돌하는가 SOLID 원칙은 객체지향 설계에서 이상적인 구조를 안내해주는 나침반 같은 존재다. 그러나 이상은 이상일 뿐, 실무에서는 그 원칙들이 충돌하거나 현실과 괴리되는 순간들이 적지 않다. 특히 SRP(단일 책임 원칙)과 OCP(개방-폐쇄 원칙)은 애초에 지향하는 방향 자체가 다르기 때문에 실제 개발 현장에서는 둘 사이의 갈등이 빈번히 발생한다. SRP는 책임을 명확하게 나누라고 하고, OCP는 기존 코드를 수정하지 말고 확장하라고 요구한다. 그런데 책임을 나누다 보면 단일 클래스가 너무 작아지고, 그 조합을 위한 코드가 중첩되며, 새로운 기능이 들어올 때마다 확장을 고려해야 하는 OCP와 상충하게 된다. 반대로, 확장을 위해 공통된 인터..

컴퓨터공학 2025.05.22