SOLID 강의1

마음이편해·2022년 12월 5일

단일책임의 원칙

  • 위 클래스의 원 자체에 단일책임이 아닌 다른 기능들이 있음
  • 직렬화, 그리기(draw)
  • 만약 화면의 비율이나 draw함수의 세부사항이 변경되면 circle클래스 자체가 변경되는 것과 같다.
  • circle클래스가 변경된다면
  • 위와 같은 함수 or 기능들이 변경된다.
  • 만약 circle, square클래스의 해당기능들이 존재하며 이들이 변경되게 된다면 종속성 및 코드수정에 비용이 많이들게 되지만
    -
  • 위와같은 형식으로 설계하여 개발되었다면 기능의 변경에 대해 큰비용이 발생하지 않으며, 유지보수나 수정이 용이하게된다.

개방폐쇄의 원칙


  • 위와 같은 코드는 지금 당장은 circle, square, rectangle 3가지의 타입의 도형만 enum으로 정의하고 있고 타입에 대해 각각 처리하고 있지만 향후 도형이 추가됨에 따라 코드의 길이는 길어지고 추가해야하는 작업량도 늘어나게 될 것이다.
    이와 같은 제약 혹은 유지보수의 비용을 줄이기 위해 다형성의 개념이 정립되었다.

  • 최상위 인터페이스에서 도형별로 추가되어야 하는 기능에대해 개념만 정의하고 각각의 도형이 동작해야하는 기능은 추상화된 개념을 정의하고 구현하는것에 초점이 맞춰져있는 것이다.

  • 위의 설계와같이 추상화된 개념만을 정의하고 하위클래스에서 이에 대한 동작을 구현하게된다면, 코드의 상단에서 추상화된 함수를 선언하고 호출하는것 만으로도 각각의 기능을 묶어 세부동작만 다르게 동작할수 있게 되는 것이다.

0개의 댓글