ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SOLID (객체 지향 설계) 란?
    이론 개념 2019. 9. 1. 17:44

    객체지향 설계는 긴 세월과 수많은 시행착오를 거치며 5가지 원칙으로 정리 되었다.

    S (SRP) 단일 책임 원칙 한 클래스는 하나의 책임만 가져야한다.
    O (OCP) 개방 폐쇄 원칙 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
    L (LSP) 리스코프 치환 원칙 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
    I (ISP) 인터페이스 분리 원칙 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
    D (DIP) 의존관계 역전 원칙 프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다.

     

     

    S - 단일 책임 원칙


    • 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함을 일컫는다.
    • 클래스가 제공하는 모든 기능은 이 책임과 주의 깊게 부합해야 한다.
    • 뿐만아니라 책임을 적절히 분배 함으로써 코드의 가독성 향상, 유지보수 용이라는 이점까지 누릴수 있다.

     

     

    O - 개방 폐쇄 원칙


    • 변경을 위한 비용은 가능한 줄이고  확장을 위한 비용은 가능한 극대화 해야한다는 의미다.
    • 요구사항의 변경이나 추가사항이 발생하더라도, 기존 구성요소는 수정이 일어나지 말아야 하며 , 기존 구성요소를 쉽게 확장해서 재사용할수 있어야 한다.
    • OCP 를 가능하게 하는 중요한 메커니즘은 추상화와 다형성이다.
    • 변경(확장)될 것과 변하지 않을 것을 엄격히 구분한다.
    • 위의 두 모듈이 만나는 지점에 인터페이스를 정의한다.
    • 구현에 의존하기보다 정의한 인터페이스에 의존하도록 코드를 작성한다.

     

    L - 리스코프 치환 원칙


    • 서브타입은 언제나 기반 타입으로 교체할 수 있어야 한다.
    • 달리말하면 서브 타입은 기반타입이 약속한 규약(인터페이스)를 지켜야 한다.
    • 만약 두개체가 똑같은 일을 한다면 둘을 하나의 클래스로 표현하고 이를 구분할 수 있는 필드를 둔다.
    • 똑같은 연산을 제공하지만 이들을 약간씩 다르게 한다면 공통의 인터페이스를 만들고 둘이 이를 구현한다.
    • 공통된 연산이 없다면 완전 별개인 2개의 클래스를 만든다.

     

     

    I - 인터페이스 분리의 원칙


    • 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용가능하게 한다.
    • 인터페이스 분리 원칙을 통해 시스템의 내부 의존성을 약화시켜 리팩토링, 수정, 재배포를 쉽게 할 수 있다.

     

     

    D - 의존관계 역전 원칙


    • 하위 레벨 모듈의 변경이 상위 레벨 모듈의 변경을 요구하는 위계관계를 끊는 의미의 역전이다.
    • 구현 클래스가 아닌 인터페이스 타입을 사용하라는 규칙이다.
    • 구현 클래스는 자주 변경될 가능성이 높기 때문에, 변화 가능성이 상대적으로 적은 추상 타입이나 메서드에 의존하면 변화에 따른 영향을 최소화 할수 있다.

    '이론 개념' 카테고리의 다른 글

    Http(Https) 통신과 soket 통신의 차이  (0) 2019.09.28
    웹 서버(Web Server) 와 WAS 란?  (0) 2019.09.28
    Java 기초 개념 (2)  (0) 2019.09.28
    Java 기초 개념 (1)  (0) 2019.09.28
Designed by Tistory.