SRP와 AOP의 차이

안성희·2025년 8월 31일

SRP(Single Responsibility Principle) : 단일 책임 원칙

  • 객체지향 설계 원칙 중 하나
  • 클래스나 모듈이 하나의 변경 사유만 가져야 함
  • 클래스 단위에서 적용되는 설계 원칙
  • 각 클래스는 하나의 책임만 가져야 하며, 변경할 이유가 하나여야 함
  • 정적인 구조 관점에서 코드를 설계하는 원칙

AOP(Aspected Oriented Programming) : 관점 지향 프로그래밍

  • 프로그래밍 패러다임
  • 핵심 기능과 보조 기능을 분리하여 모듈화하는 기법
  • 여러 클래스에 걸쳐 공통적으로 나타나는 부가 기능을 분리
  • 동적인 실행 시점에서 부가 기능을 핵심 로직에 삽입
  • 로깅, 트랜잭션, 보안 등의 공통 관심사를 독립된 모듈로 관리

기능 분리 방식의 차이

SRP

  • 수직적 분리
    • 서로 다른 책임를 가진 기능들을 별도의 클래스로 분리
  • 각각 독립적인 책임을 가진 클래스들로 나누는 것

EX

  • UserService 클래스에서 사용자 관리 + 이메일 발송 기능이 섞여있다면
    => UserService와 EmailService 로 분리

AOP

  • 수평적 분리
    • 여러 클래스에 공통으로 나타나는 부가 기능을 분리
  • 횡단으로 나타나는 공통 관심사를 별도 모듈로 분리하는 것

EX

  • UserService, OrderService, PaymentService 모두에 로깅 코드가 있다면
    => 로깅 기능을 Aspect로 분리

SRP와 AOP는 상호 보완적인 관계

  • AOP를 적용하게 되면 자연스럽게 SRP를 지키게 됨
  • 따라서, AOP는 SRP를 실현하는 구현 기법 중 하나라고 볼 수 있음
profile
무재다능 개발자

0개의 댓글