[개발100독] 5. Java 언어로 배우는 디자인 패턴 입문 - 유키 히로시(結城 浩) [쉽게 배우는 GoF의 23가지 디자인 패턴]
·
◈ 공부모임/개발도서 100독👟
5. Java 언어로 배우는 디자인 패턴 입문 GoF Design patterns in Java Java 코드로 보는 GoF의 23가지 디자인 패턴 GoF의 23가지 디자인 패턴을 Java 코드로 잘 풀어낸 책. Spring Framework에서 많이 쓰는 Singleton, Template Method, Factory Method 등을 예제로 하나하나 분석하면서 볼 수 있어서 좋았다. 다만 Builder 패턴은 기존에 알고 있던 유형과 살짝 달랐고, Composite 패턴처럼 web 개발이 아닌 다른 개발에서 사용되는 패턴들을 Java와 객체지향적 코드로 풀어내려 하는 게 약간 부자연스럽다 느꼈다. 그래도 디자인 패턴을 객체지향 관점으로 잘 풀어낸 책이라, Java 개발자에게 디자인 패턴 입문 서적으로..
[GoF] Decorator 패턴 : 장식들과 내용물을 동일시한다 [객체에 장식을 더해 가는 패턴]
·
◈ Study/디자인패턴(GoF)🥞
- Decorator 패턴 : 장식들과 내용물을 동일시한다 Decorator 패턴은 중심이 되는 객체가 있고, 거기에 장식이 되는 기능을 하나씩 추가해서 목적에 더 맞는 객체로 만들어 가는 패턴이다. 객체에 장식을 더해 가는 디자인 패턴이라 이해하면 된다. - 어떤 경우에 사용할까? Decorator 패턴에서는 장식틀과 내용물이 공통의 인터페이스를 가지지만, 감싸면 감쌀수록 기능이 추가된다. 이때 감싸지는 쪽을 수정할 필요는 없기에, 내용물을 변경하지 않고 기능을 추가할 수 있다. - 예제 코드 이름 설명 Display 문자열 표시용 추상 클래스 StringDisplay 1행으로 구성된 문자열 표시용 클래스 Border '장식틀'을 나타내는 추상 클래스 SideBorder 좌우에만 장식틀을 붙이는 클래스..
[GoF] Composite 패턴 : 그릇과 내용물을 동일시한다 [재귀적인 구조를 만드는 패턴]
·
◈ Study/디자인패턴(GoF)🥞
- Composite 패턴 : 그릇과 내용물을 동일시한다 Composite 패턴은 컴퓨터 파일 시스템의 '디렉터리(Directory)'처럼 '중첩'된 구조, 재귀적인 구조를 만들어내는 패턴이다. 그릇과 내용물을 동일하게 만들어내는 것이 특징이다. - 어떤 경우에 사용할까? 그릇과 내용물을 같은 종류로 취급하면 편리한 경우가 있다. Composite 패턴을 사용하면 그릇 안에 내용물을 넣을 수도 있고, 더 작은 그릇을 넣을 수도 있다. 이러한 형태로 중첩된 구조, 재귀적인 구조를 만들 수 있다. - 예제 코드 이름 설명 Entry File과 Directory를 동일시하는 추상 클래스 File 파일을 나타내는 클래스 Directory 디렉터리를 나타내는 클래스 Main 동작 테스트용 클래스 - Entry 클..
[GoF] Strategy 패턴 : 알고리즘을 모두 바꾼다 [같은 문제를 다른 방법으로 해결하기 쉽게 만들어주는 패턴]
·
◈ Study/디자인패턴(GoF)🥞
- Strategy 패턴 : 알고리즘을 모두 바꾼다 Strategy 패턴은 스위치 전환하듯 알고리즘을 바꿔, 같은 문제를 다른 방법으로 해결하기 쉽게 만드는 패턴이다. - 어떤 경우에 사용할까? 보통 프로그래밍을 하다 보면 알고리즘을 메서드 안에 녹아드는 형태로 구현하기 쉬운데, Strategy 패턴을 사용하면 알고리즘 부분을 다른 부분과 의도적으로 분리한다. 이로 인해 알고리즘을 용이하게 전환할 수 있다. - 예제 코드 이름 설명 Hand 가위바위보의 '손'을 나타내는 클래스 Strategy 가위바위보의 '전략'을 나타내는 인터페이스 WinningStrategy 이기면 다음에도 같은 손을 내는 전략을 나타내는 클래스 ProbStrategy 직전 손에서 다음 손을 확률적으로 계산하는 전략을 나타내는 클래..
[GoF] Bridge 패턴 : 기능 계층과 구현 계층을 나눈다 [기능의 클래스 계층과 구현의 클래스 계층을 연결하는 패턴]
·
◈ Study/디자인패턴(GoF)🥞
- Bridge 패턴 : 기능 계층과 구현 계층을 나눈다 Bridge 패턴은 '기능의 클래스 계층'과 '구현의 클래스 계층'이라는 두 개의 독립된 클래스 계층을 나누고, 두 계층을 연결하는 패턴이다. 계층을 분리해두면 각각의 클래스 계층을 독립적으로 확장할 수 있다. - 어떤 경우에 사용할까? Bridge 패턴의 특징은 '기능의 클래스 계층'과 '구현의 클래스 계층'을 분리하는 것이다. 기능을 추가하고 싶으면 기능의 클래스 계층에 클래스를 추가하면 되고, 구현의 클래스 계층은 전혀 수정할 필요가 없어진다. - 예제 코드 다리의 어느 쪽인가? 이름 설명 기능의 클래스 계층 Display '표시한다' 클래스 기능의 클래스 계층 CountDisplay '지정 횟수만큼 표시한다' 기능을 추가한 클래스 구현의 클..