준비하는 대학생

[Design Pattern] SOLID 원칙 (SRP-단일 책임 원칙) 본문

Programming/Design pattern

[Design Pattern] SOLID 원칙 (SRP-단일 책임 원칙)

Bangii 2023. 3. 12. 21:57

 SOLID 디자인 원칙 중 하나인 SRP(Single Responsibility Principle)는 코드의 유지보수성과 확장성을 높이기 위해 매우 중요합니다. 이번 글에서는 SRP를 따르는 자바 코드를 작성하는 방법과 이를 적용하면 어떤 장점이 있는지에 대해 자세히 알아보겠습니다.

SRP란?

 SRP는 한 클래스는 단 하나의 책임만 가져야 한다는 원칙입니다. 클래스가 담당하는 책임이 너무 많아지면 코드가 복잡해지고 유지보수성이 떨어지게 됩니다. 또한, 한 가지 책임을 수행하는 클래스가 여러 곳에서 사용될 경우, 한 쪽에서 수정이 이루어지면 다른 쪽에서도 영향을 받게 되어 시스템 전체의 안정성에 영향을 미칠 수 있습니다.

SRP를 따르는 예시

다음은 SRP를 따르는 자바 코드의 예시입니다.

public class Order {
    public void processOrder() {
        // 주문 처리 로직
    }
}

public class Payment {
    public void processPayment() {
        // 결제 처리 로직
    }
}

 위의 코드에서 볼 수 있듯이, Order 클래스와 Payment 클래스는 각각 하나의 책임을 수행하도록 구현되어 있습니다. Order 클래스는 주문 처리를, Payment 클래스는 결제 처리를 담당합니다. 이렇게 SRP를 따르면 코드의 가독성과 유지보수성이 높아지게 됩니다.

SRP를 따르지 않는 예시

다음은 SRP를 따르지 않는 자바 코드의 예시입니다.

public class Order {
    public void processOrder() {
        // 주문 처리 로직
    }
    
    public void processPayment() {
        // 결제 처리 로직
    }
}

 위의 코드에서는 Order 클래스가 주문 처리와 결제 처리 두 가지 책임을 모두 담당하고 있습니다. 이렇게 되면 Order 클래스는 코드가 복잡해지고 유지보수성이 떨어지게 됩니다. 또한, 결제 처리 로직이 변경되면 주문 처리와 관련된 코드까지 모두 영향을 받게 되므로 시스템 전체의 안정성에 영향을 미칠 수 있습니다.

SRP를 따르면 얻을 수 있는 장점

 SRP를 따르면 코드의 가독성과 유지보수성이 높아지게 됩니다. 한 클래스가 단 하나의 책임만을 수행하도록 구현하면 코드를 이해하기 쉬워지고 수정하기 쉬워지기 때문입니다. 또한, 변경이 발생할 때 해당 모듈만 수정하면 되므로 코드의 재사용성과 확장성도 높아집니다. 따라서 SRP를 따르는 코드를 작성하면 코드의 품질을 높일 수 있습니다.

SRP를 따르는 방법

 SRP를 따르는 방법은 간단합니다. 클래스가 담당하는 책임이 너무 많아지면 새로운 클래스로 분리해주면 됩니다. 이때, 새로운 클래스는 기존 클래스와 협력하도록 구현해야 합니다. 이를테면, 주문 처리와 결제 처리를 담당하는 클래스가 있다면, 결제 처리 클래스는 주문 처리 클래스와 협력하여 결제 처리를 수행해야 합니다.

정리

 SRP는 한 클래스는 단 하나의 책임만 가져야 한다는 원칙으로, 코드의 가독성과 유지보수성을 높이기 위해 매우 중요합니다. SRP를 따르면 코드의 품질을 높일 수 있으며, 클래스가 담당하는 책임이 명확해져 코드를 이해하기 쉬워집니다. 따라서 SRP를 따르는 코드를 작성하도록 노력해야 합니다.

Comments