헤드 퍼스트 디자인 패턴

Life is ninanino·2022년 11월 3일
0

리뷰

목록 보기
3/4

미완성🌘

아직 완독 전이며, 추가로 작성해나가는 중입니다 ✍🏻
책에 멋진 내용이 많으니 꼭 구매하거나 대여해서 읽어보는 걸 추천드립니다


무엇을 배울 수 있는가?

디자인 패턴, 객체 지향 프로그래밍을 배울 수 있다.
(참고로 나는 디자인패턴을 정보처리기사 (생)성(구)조(행)위 따위로 외운 수준이다)

❗️중요하다

  • 연습문제는 꼭 풀어보고 메모를 남긴다.
  • <무엇이든 물어보세요> 부분은 반드시 읽어본다
  • 배운 내용을 남에게 설명할 수 있을 정도가 되어야 한다
  • 디자인에 새로운 것을 적용해보거나 기존 프로젝트를 리팩토링해본다.

코드를 바꿔야 했던 이유를 생각해보자

내 경우엔 기껏 구현 해놨는데 전혀 쓸모가 없는 경우가 많았다. 무분별하고 무의미하게 만들어진 메소드를 남발해서 코드의 가독성이 떨어지는 경우도 있다. 기능을 만들다보니 추가해야하고 삭제해야 할 부분이 수도 없이 많았다.

전략패턴(Strategy Pattern)

디자인(객체지향) 원칙 :

어플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다

달라지는 부분을 찾아서 나머지 코드에 영향을 주지 않도록 '캡슐화' 한다
그러면 나중에 바뀌지 않는 부분에서 영향을 미치지 않고 그 부분만 고치거나 확장함으로써 시스템의 유연성을 향상 시킬 수 있다
➡️ 쓸데 없는 일을 줄일 수 있다는 말이다

구현보다는 인터페이스에 맞춰서 프로그래밍한다

행동은 여러가지로 표현할 수 있다.
새를 예로 들자면 날 수도 있고, 날지 못하는 새도 있다. 소리가 나는 새가 있고 소리가 나지 않는 새가 있다.
이런 특정 행동을 인터페이스로 구현한다.
그럼 새 클래스에서는 새의 행동을 구체적으로 구현할 필요가 없다.

" 인터페이스에 맞춰서 프로그래밍 한다 " 라는 말은 사실
"상위 형식에 맞춰서 프로그래밍 한다" 는 말이다
이 말은 변수를 선언할 때 보통 추상 클래스나 인터페이스 같은 상위 형식으로 선언해야 한다. 객체를 변수에 대입할 때 상위 형식을 구체적으로 구현한 형식이라면 어떤 객체든 넣을 수 있기 때문이다 그럼 변수를 선언하는 클래스에서 실제 객체의 형식을 몰라도 된다.

상속보다는 구성을 활용한다

새는 날 수 있고 울 수 있다. 이 두 클래스를 합치는 것은 구성(composition)을 이용한다라고 부른다
구성을 활용해서 시스템을 만들면 유연성을 크게 향상시킬 수 있다. 단순히 알고리즘군을 별도의 클래스 집합으로 캡슐화할 수 있으며 구성 요소로 사용하는 객체에서 올바른 행동 인터페이스를 구현하기만 하면 실행 시에 행동을 바꿀 수 있다. 일단 상속에 대해서 깊이 생각해보다. 상속 외에도 재사용을 이룰 수 있는 여러가지 방법이 있다.

여기까지 전략 패턴(Strategy Pattern) 에 대해 알아봤다
전략패턴은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다.
https://plposer.tistory.com/16
이곳에 굉장하게 정리가 잘 되어있다. 시간되면 읽어보는 걸 추천한다

관리가 용이한 객체지향 시스템을 만드는 비결 중 하나가 "나중에 어떻게 바뀔 것인지"에 대해 생각해보는 것이다.

profile
백엔드 프로그래밍을 공부하고 있습니다. AWS, 클라우드 환경에 대해 관심이 많습니다.

0개의 댓글