IT/Software 도서

Head First - Design Pattern

데브렉스 2013. 7. 1. 13:29
반응형

패턴의 필요성

- 전문 용어의 위력: 서로 알고 있는 패턴 용어는 정말 막강하다, 패턴을 이용하면 간단한 단어로 많은 것을 얘기할 수 있다. 패턴 수준에서 이야기를 하면 "디자인"에 더 오랫동안 집중할 수 있다. 전문용어를 사용하면 개발 팀의 능력을 극대화 할 수 있다. 전문용어는 신참 개발자들에게 훌륭한 자극제가 된다.

- 객체지향 기초지식만 가지고는 훌륭한 객체지향 디자이너가 될 수 없다.

- 훌륭한 객체 지향 디자인이라면 재사용성, 확장성, 관리의 용이성을 갖춰야 한다.

- 패턴은 훌륭한 객체지향 디자인 품질을 갖추고 있는 시스템을 만드는 방법을 제공해 준다.

- 패턴이 코드를 바로 제공해주는 것은 아니다. 디자인 문제에 대한 일반적인 해법을 제공. 특정 app에 패턴을 적용하는 것은 개발자의 몫



[객체지향의 기초]

- 추상화

- 캡슐화

- 다형성

- 상속


[객체지향 원칙]

- 바뀌는 부분은 캡슐화 한다.

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

- 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다.

- 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용한다. (유연하고 변화에 강하다)

- 클래스는 확장에 대해서는 열려 있지만 변경에 대해서는 닫혀 있어야 한다. (OCP, Open-Close-Principle)


[객체지향 패턴]

- Strategy Pattern: 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. Strategy Pattern을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. (interface)


- Observer Pattern: 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다.

  스윙 및 여러 GUI 프레임워크에서 옵저버 패턴이 많이 쓰인다. 그 뿐아니라 다른 부분에서도 광범위하게 쓰인다(JavaBean, RMI)


- Decorator Pattern: 객체에 추가 요소를 동적으로 더할 수 있다. 데코레이터를 사용하며 서브 클래스를 만드는 경우에 비해 후러씬 유연하게 기능을 확장할 수 있다. (데코레이터 패턴을 사용하면 자잘한 객체들이 매우 많이 추가될 수 있고, 데코레이터를 너무 많이 사용하면 코드가 필요 이상으로 복잡해질 수도 있습니다)

반응형