이전

리뷰 (1)

한줄평
평점 분포
  • 리뷰 총점10 0%
  • 리뷰 총점8 100%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 0.0
  • 40대 8.0
  • 50대 0.0
리뷰 총점 종이책
[자바 디자인 패턴] 각 디자인패턴을 실제 적용한 코드를 보라
"[자바 디자인 패턴] 각 디자인패턴을 실제 적용한 코드를 보라" 내용보기
"열혈강의" 시리즈의 명성을 그대로 잇는 디자인패턴 책입니다. 각 패턴들에 대한 간략한 설명과 함께 그 패턴들을 사용해서 작성한 실제 코드가 함께 기술되어 있습니다. 그래서, 언듯 보면, 그냥 코드만 나열되어 있는 듯 싶지만, 사실은 그것이 핵심인 것이지요. 다른 패턴 관련 서적에서는 코드의 부분만이 소개되어 있어서, 실제 프로그램과정에서 적용시켜보기가 어려웠지만, 이 책
"[자바 디자인 패턴] 각 디자인패턴을 실제 적용한 코드를 보라" 내용보기

"열혈강의" 시리즈의 명성을 그대로 잇는 디자인패턴 책입니다. 


각 패턴들에 대한 간략한 설명과 함께 그 패턴들을 사용해서 작성한 실제 코드가 함께 기술되어 있습니다. 


그래서, 언듯 보면, 그냥 코드만 나열되어 있는 듯 싶지만, 사실은 그것이 핵심인 것이지요. 


다른 패턴 관련 서적에서는 코드의 부분만이 소개되어 있어서, 실제 프로그램과정에서 적용시켜보기가 어려웠지만, 이 책에서는 각 패턴을 이용한 전체 코드가 기술되어 있기 때문에, 이해하기 쉽습니다. 


또한 패턴을 적용하는 과정에서 카피&페이스트도 용이하지요. 


그렇다고 코드가 수준이 낮지도 않습니다. 


두고 두고 써먹을 수 있는 고급 코드와 간략하지만, 핵심을 잘 지적하고 있는 패턴 설명으로, 근래에 본 패턴 관련 서적중에서는 가장 활용도가 높은 책이라고 생각됩니다. 


물론 코드 위주인 만큼, 자바에 대한 어느정도의 기본 지식을 필요로 하고 있지만, 뭐 디자인 패턴을 보려는 독자라면, 충분히 가정할 수 있는 요구사항일 것입니다. 


책에서 설명하는 14개의 패턴들은 다음과 같습니다. 

===============

1. MVC Pattern

Model-View-Controller

 

2. Factory Pattern

객체 생성을 직접하지 않고, 타 클래스에게 객체 생성을 위임하는 패턴. 이때 위임받은 클래스는 필요한 객체 생성을 선언한 인터페이스의 구현 클래스가 돼야 하며, 그렇게 함으로써 객체 생성에서 변경되어야 하는 코드의 수정을 인터페이스에서 선언된 API의 구현부에만 국한 시킬 수 있는 유지보수의 편리성과 확장성을 확보할 수 있게 된다.

 

3. OOP

객체지향의 3가지 특성 : 상속성(Inheritance) 은닉성(Encapsulation) 추상화(Abstraction)

 

상속성의 방법 : extends, implements

추상화의 방법 : 다형성 : Overriding, Overloading

은닉성의 방법 : private, public, protected

 

4. Prototype Pattern

클래스를 이용해 컴파일 시에 객체 생성을 결정짓는 것이 아니라 원형 객체를 이용해 실행시에 객체를 생성하는 것. 같은 정보를 포함하는 객체 생성에 따른 부하를 줄이기 위해 사용된다.

우선 원형 객체를 생성하고, 그 객체를 복사하여 사용함으로, 원형 객체를 생성하는데 소요되는 자원 낭비를 줄이는 것이 목적이다.

(예) DB에 질의를 매번 직접 날리지 않고, 처음 테이블을 내부 변수로 복사해 온 뒤, 그 복사된 정보를 가지고 재활용함으로써, DB연결의 비용을 줄일 수 있다.

 

5. Facade Pattern

복잡한 로직, 클래스사이의 관계등을 은식시키고 간략화하여 외부에서 접근 가능한 창구의 기능을 하도록 만드는 것 (일종의 Wrapper Class를 만들어서 사용하는 것)

 

6. Singleton Pattern & Object Pool Pattern

 

public class Singleton

{

     private static Singleton my_instance;

     private  Singleton()

     {}

 

     public static Singleton CreateInstance()

     {

           if( my_instance == null)

               my_instance  = new Singleton();

           return my_instance;

    }

}

 

7. Immutable Pattern & Flyweight Pattern

 

Flyweight Pattern : 객체 생성시, 사용하고지 하는 객체가 있는지를 먼저 검사하고 이미 있다면 이를 참조할 수 있도록 하고 없으면 새로 생상함으로써, 객체 생성의 작업노드를 줄이기 위한 패턴

Immutable Pattern : 객체에 변형이 발생하면 실제 객체에 변형을 가하는 것이 아니라 변형된 객체를 새로 만들고 원 객체는 그대로 보존하는 패턴

 

8. Command Pattern & Mediator Pattern

Command Pattern : 인터페이스를 이용한 다양한 클래스의 통합 관리 패턴

public interface Command{ public void execute();}

 

public class A implements Command~

public class B implements Command~

 

Command test = (Command)(new A());

 test = (Command)(new B());

 test.execute();

 

Mediator Pattern : 클래스와 클래스 사이의 중계역할을 해주는 중계자를 사용하는 패턴. 추후 클래스들에 대한 조정 없이 중계자 클래스만을 수정함으로써, 클래스들 사이의 관계를 수정할 수 있다. 자칫, 중계자 클래스가 GOD클래스가 되어버릴 수 있음

 

9. Observer Pattern

변화가 발생하면 이를 인지하기 위해서 주기적으로 요청을 보낼 것인지 아니면 관찰자를 붙여 놓음으로써 변화를 즉각적으로 인지하여 이를 반영할 것인지를 다루는 패턴

 

10. Composite Pattern

수직 구조를 표현할때 사용. Tree구조를 쉽게 표현할 때 이용하면 좋음

 

11. Builder Pattern & Chain of Responsibility Pattern

Chain of Responsibility : 요청을 하는 쪽과 요청을 처리하는 쪽의 연관 관계를 제거함으로써 서로의 독립성을 보장할 수 있는 패턴. 요청을 받는 쪽이 자신이 해결할 수 없는 요청이면, 자신에게 연결된 다른 클래스에게 그 요청을 재전달하여, 결국 그 요청을 처리할 수 있는 책임자까지 체인을 통해 그 요청을 전달하는 구조

Builder Pattern : 프로세스를 담당하는 클래스와 각 프로세스 단계에서 실제 작업을 수행할 클래스를 동적으로 연결짓기 위한 패턴. 고정된 프로세스와 각 단계에서의 다른 작업을 상속을 통한 확장으로 구현

12. Iterator Pattern

자료의 존재 여부를 차례로 검사하고 또 존재하는 자료를 반환/삭제할 수 있는 Iterator 인터페이스와 자료의 구조를 구성하는 Aggregate 구현 클래스로 구성

 

13. Strategy Pattern

Strategy 인터페이스를 구현한 여러 전략 클래스들을 만들어, 런타임 상황에서 동적으로 인스턴스를 연결해 작업하는 구조

 

14. Bridge Pattern

기능과 구현이라는 측면을 하나의 클래스 계층으로 존재시키는 것이 아니라 서로 분리시켜 서로에게 독립적으로 존재할 수 있도록 하는 것. 이때 기능과 구현이라는 측면 사이에 Bridge를 두어 서로 원활히 작동할 수 있도록 해 주는 것 (구현 결과로만 보면 Strategy Pattern 이나 Mediator Pattern과의 차이를 보기 힘들다)



l*****6 2012.01.18. 신고 공감 0 댓글 0