ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 좋은 객체 지향 설계의 5가지 원칙(SOLID)
    공부일기/Java 8 2021. 6. 21. 19:15

     

     

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

    • 한 클래스는 하나의 책임만 가져야 한다.
    • 하나의 책임이라는 것이 모호한데, 문맥과 상황에 따라 다르다.
    • 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것
    • ex) UI 변경, 객체의 생성과 사용을 분리

     

     

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

    • 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
    • 다형성을 활용한다.
    • 역할과 구현의 분리
    • 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현

        문제점

    • 구현 객체를 변경하려면 클라이언트 코드를 변경해야 한다.
    • 분명 다형성을 사용했지만 OCP를 지킬 수 없다. -> 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필요 -> 스프링 컨테이너의 역할

     

     

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

      • 프로그램의 객체는 정확성을 깨지 않으며 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
      • 역할이 있으면 역할에 맞는 행동이 보장되어야 한다.
      • 이 원칙은 자식 클래스의 잘못된 상속 구현으로 인한 문제에 대해 좀 더 포괄적인 의미를 내포하고 있다.
      • 개발자 관점으로 더 자세히 얘기하면, 
        • '부모 클래스 타입인 A를 사용하는 기존의 프로그램 코드가 자식 클래스 B로 대입 시켰을 때도 문제 없이 작동하도록 하기 위해서, 자식 클래스는 부모 클래스가 따르던 계약 사항을 자식도 따라야한다.'이다. ex) 냉장고의 기능은 내부의 기온을 낮추는 것이지 올리는 것이 아니다.

     

     

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

    • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
    • 인터페이스가 명확해지고, 대체 가능성이 높아진다.

     

     

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

    • 추상화에 의존해야지, 구체화에 의존하면 안된다. 의존성 주입이 이 원칙을 따르는 방법 중 하나이다.
    • 간단히 말해 구현 클래스가 아닌, 인터페이스에 의존하라!
    • 인터페이스에 의존한다는 것은? 역할에 의존한다는 것이다. -> 변경에 유연하게 대응할 수 있다.

    '공부일기 > Java 8' 카테고리의 다른 글

    Java 항해일지 - 13. I/O  (0) 2021.02.28
    Java 8 - 8. 애노테이션의 변화  (0) 2020.12.26
    Java 8 - 7. Callable과 Future  (0) 2020.12.25
    Java 8 - 6. Concurrent 프로그래밍과 Executors  (0) 2020.12.24
    Java 8 - 5. Date & Time  (0) 2020.12.23
Designed by Tistory.