유지보수성강화 3

싱글턴과 DI 컨테이너 구조

1. 싱글턴 패턴의 본질과 한계1-1. 싱글턴은 왜 등장했을까? 객체지향 설계에서 싱글턴(Singleton)은 "클래스의 인스턴스를 단 하나만 생성하고, 어디서든 접근할 수 있도록 하는 패턴"이다. 이 패턴은 주로 다음 두 가지 상황에서 유용하다.애플리케이션 전체에서 공유 자원이 필요할 때하나의 인스턴스만 있어야 일관성을 유지할 수 있는 경우 예를 들어, 로그 기록기(Logger), 설정 객체(Config), DB 커넥션 풀(Connection Pool)처럼 애플리케이션 전체에서 동일한 인스턴스를 사용하는 것이 바람직한 경우 싱글턴이 사용되었다.public class Logger { private static final Logger instance = new Logger(); private L..

컴퓨터공학 2025.05.23

디자인 패턴 총정리

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