ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • '오브젝트' 책 보고 공부하기 - ⑮ 디자인 패턴과 프레임워크
    JAVA공부/JAVA 2023. 7. 10. 02:03

    1) 디자인 패턴과 설계 재사용

     

    패턴의 분류


    ● 
    아키텍처 패턴:

    미리 정의된 서브 시스템을 제공, 각 서브시스템 책임을 정의, 서브시스템간 조직화하는 규칙과

    가이드라인을 포함한다.

    - 소프트웨어의 전체적인 구조 결정


    ● 분석 패턴: 

    업무 모델링 시에 발견되는 공통적인 구조를 표현하는 개념들의 집합

    - 도메인 내의 개념적인 문제 해결에 초점

     

    ● 디자인 패턴: 

    협력하는 컴포넌들 사이에서 반복적으로 발생하는 구조를 서술

    - 특정한 설계문제를 해결하는 것을 목적으로 한다.

     

    ● 이디엄 패턴:

    특정 언어에만 국한된 패턴으로 주어진 언어의  기능을 사용해 컴포넌트, 혹은 컴포넌트 간의 특정 측면을 구현하는 방법을 서술

    - 객체가 스스로 자신을 참조하는 객체들의 개수를 카운트해서 더이상 참조되지 않을 경우 스스로를 삭제 (C++ COUNT POINTER)

     

     

    책에서 보여준 패턴들

    일반적인 할인 정책과 중복 할인 정책 - 일반적인 할인 정책들은 Leaf의 역할을 수행하고 중복할인 정책은

    Composite역할을 한다. [COMPOSITE 패턴] (개별 객체가 복합객체를 동일하게 취급하는 패턴)

     

    영화 예매 시스템 - 할인 정책을 합성관계로 유지 [STRATEGY 패턴] (다양한 알고리즘을 동적으로 교체할 수 있는 패턴)

    이를 상속관계로 진행하게 되면 [TEMPLATE METHOD 패턴] (추상 메서드를 통해 변화하는 부분을 구현하는 패턴)

     

    핸드폰 과금 시스템 설계 - 과금을 동적으로 추가해준다. [DECORATOR 패턴] (객체의 행동을 동적으로 추가할 수 있게 해주는 패턴)

     

    패턴을 사용할때는..

    실무 경험을 통해 어떤 컨텍스트에서 어떤 패턴을 적용해야하는지, 트레이드 오프 없이 패턴을 남용하고 있지 않은지.

    사용에는 타당한 이유가 필요하다.

    패턴을 적용할 때 함께 적용하는 사람들이 패턴이 익숙한지 확인하고, 설계 지식과 패턴 지식을 공유하는 것이 필요하다.

     

     


     

    2) 프레임워크와 코드 재사용

     

    프레임워크는 설계를 재사용하면서도 유사한 코드를 반복적으로 구현하는 문제를 피하는 방법이다.

    또 다른 정의를 보자면,

    '추상 클래스나 인터페이스를 정의하고 인스턴스 사이의 상호작용을 통해 시스템 전체 혹은 일부를 구현해 놓은 재사용 가능한 설계'

    혹은

    '애플리케이션 개발자가 현재의 요구사항에 맞게 커스터마이징 할 수 있는 애플리케이션 골격'을 의미한다.

     

    프레임워크는 상위 정책과 하위 정책이 분리되어있다.

    책에서는 그간 사용해온 인터페이스에 집중하여 인터페이스, 추상클래스 단과 구현 패키지를 분리하였다.

    실무에서 스프링 프레임워크를 보면 시큐리티, 배치, 스케줄러, ORM 등등 프레임워크에서는 구현부를

    사용자에게 직접 구현하라고 제시한다. - 추상화에 의존해서 배포한다는 것을 알 수 있다. (의존성 역전 원리)

     

    의존성 역전 시킨 객체지향 구조에서는 프레임워크가 애플리케이션에 속하는 서브클래스의 메서드를 호출하는데,

    이것이 프레임워크가 제어 흐름의 주체가 된다고 하며, 이를 제어 역전 원리 , 혹은 할리우드 원리 라고 한다.

     

    프레임워크에서는 일반적인 해결책만 제공하고 애플리케이션에 따라 달라지는 특정한 동작은 비워두는데,

    이를 훅(hook)이라고 부른다.

     

     

     

Designed by Tistory.