테코톡정리 - OCP와 전략패턴

UkJJang·2021년 11월 8일
0

https://www.youtube.com/watch?v=90ZDvHl8ROE&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=176 영상을 보며 공부하였습니다.

if-else의 문제점

  • 변경, 확장이 될 수록 코드가 복잡해진다.
  • 코드를 수정하거나 수정할 위치를 찾는데 점점 오래걸린다.
  • 실수로 추가하지 않고 누락하는 부분이 생길 가능성이 있다.

즉 유지보수가 어려워진다.

OCP - 개방 폐쇄 원칙

  • Open Close Principle : 확장에 대해서는 개방되어야 하지만 변경에 대해서는 폐쇄되어야 한다.기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계해야한다.

적용방법1 - 상속(is-a)

  • 깨지기 쉬운 상위클래스의 문제 : 상속은 하위클래스가 상위클래스의 기능과 밀접하기 때문에 상위가 바뀌면 하위에 영향이 매우 크게 되버린다. 따라서 컴포지션 방법을 사용하는것이 훨씬 좋다.

적용방법2 - 컴포지션(has-a)

  • 변경될 것과 변하지 않을 것을 엄격히 구분한다.
  • 이 두 모듈이 만나는 지점에 인터페이스를 정의한다.
  • 구현에 의존하기보다 정의한 인터페이스에 의존하도록 설계해야한다.

전략패턴

  • OCP를 준수하기 위한 사용하는 방식
  • 디자인 패턴의 꽃이라 불린다.
  • 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴
  • 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
  • 새로운 기능의 추가가 기존의 코드에 영향을 미치지 못하게 하므로 OCP를 만족하게 된다.

템플렛 메소드 패턴 - 상속 방식을 이용한 OCP 준수 패턴

전략패턴 - 컴포지션 방식을 이용한 OCP 준수 패턴


if-else 를 사용하지 않고 문자열을 계산하는 코드를 작성해보자 !

profile
꾸준하게 성실하게

0개의 댓글