분류 전체보기

    디자인 패턴을 이용하는 방법 (5)

    디자인 패턴을 이용하는 방법 (5)

    지난 포스팅에서는 디자인패턴을 활용하여 변화에 대비한 설계를 진행하는 방법에 대해 알아보았다. 이번 포스팅은 디자인 패턴을 이용하는 방법의 마지막 포스팅으로, 디자인 패턴을 고르는 방법과 디자인 패턴 사용 방법을 총 정리해보려고 한다. 디자인 패턴을 고르는 방법 GoF의 디자인 패턴에서 다루는 패턴은 20가지가 넘는다. 어떠한 문제 상황을 해결하기 위해 어떤 패턴을 써야할지 정확하게 판단하는 것은 분명 어려운 일이다. 특히 이런 디자인패턴이 생소한 개발자라면 더욱 어려울것이다. 지금부터 문제 해결에 적합한 패턴을 찾아내는 여러가지 접근 방법에 대해 알아보도록 하자. 패턴이 어떻게 문제를 해결하는지 파악하자 지금까지의 포스팅에서는 디자인 패턴이 어떻게 적합한 객체를 찾고, 객체의 크기를 결정하며, 어떻게 ..

    디자인 패턴을 이용하는 방법 (4)

    디자인 패턴을 이용하는 방법 (4)

    변화에 대비한 설계 지난 포스팅에서는 디자인 패턴의 재사용성에 대해 알아보았다. 디자인 패턴을 통해 재사용을 최대화 하기 위해서는 새로운 요구사항과 기존의 요구 사항에 발생한 변경을 예측하여 시스템 설계가 진화할 수 있도록 해야한다. 변화에 잘 대응하기 위한 소프트웨어를 설계하기 위해서는 미래에 일어날 변화를 어떻게 수용할 것인가를 미리 고려해야 한다. 변화를 수용하지 못하는 설계는 앞으로 재설계를 필요로 하게 된다. 이런 변경들은 클래스의 재설계와 재구현, 수정과 그에 따른 새로운 테스팅을 유발하는데, 재설계의 영향은 프로젝트의 여러 부분에 영향을 끼칠 수 있고, 예측하지 못한 변경은 많은 비용을 발생한다. ** 극 공감이다. 처음의 설계가 잘못되어 설계를 수정한다는 것이 어떻게 보면 프로그램의 근간을..

    디자인 패턴을 이용하는 방법 (3)

    디자인 패턴을 이용하는 방법 (3)

    지난 포스팅에서는 객체, 인터페이스, 클래스, 상속의 개념에 대해서 살펴 보았다(상단 링크 참고). 이번 포스팅에서는 디자인 패턴이 어떻게 이런 개념들을 유연하고 재사용 가능한 소프트웨어에 적용 시키는지 살펴보자. 재사용 가능한 소프트웨어 객체지향 시스템에서 기능의 재상용을 위한 가장 대표적인 방법은 상속과 객체 합성이다. 앞선 포스팅에서 상속에 대해서 알아봤으나, 객체 합성은 생소한 단어일 것이다. 객체 합성은 클래스 상속에 대한 대안으로, 새로운 기능성을 위해서 객체들을 합성하는 것이다. 객체를 합성하기위해서는 합성할 객체들의 인터페이스를 명확하게 정의해야 한다. 즉, 객체의 내부는 공개되지 않고 인터페이스를 통해서만 재사용 된다. 이 때문에 다른 클래스를 이용해서 한 클래서의 구현을 정의하는, 즉 ..

    디자인 패턴을 이용하는 방법 (2)

    디자인 패턴을 이용하는 방법 (2)

    이전 포스팅에서 객체에 대한 내용과 객체의 크기에 대한 결정을 하는 방법, 그리고 인터페이스에 대해 간단하게 다뤄 보았다. 이번 포스팅에서는 실제로 객체를 어떻게 정의하는지에 대해서 이야기 해보고자 한다. 객체 구현 명세하기 객체의 구현은 클래스에 정의한다. 클래스는 객체 내부의 데이터, 데이터의 표현방법, 그리고 오퍼레이션을 정의하여 객체를 구현한다. OMT(Obejct Modeling Technique) 기반의 표기법에서는 클래스를 표현하는 사각형에 볼드체로 클래스의 이름을 표현한다. 오퍼레이션의 이름은 클래스 아래 칸에 나열하고, 클레스가 정의하는 데이터는 오퍼레이션 아래 칸에 표시한다. 즉, 클래스의 이름, 오퍼레이션, 데이터 순으로 구분하여 표시한다. ** operation의 type은 반환 t..

    Typescript - Module

    Typescript - Module

    사실 모듈과 관련된 내용을 따로 포스팅할 내용이 있을까 싶을 정도로 간단한 내용일 수 있지만, ES5 Javascript만을 사용해온 사람들이나, 관련 내용을 처음 접하는 사람들에게 도움이 되고자 간단하게 설명하려고 한다. 가볍게 쓰-윽 읽고 넘어가면 좋을 내용이다. 어떤 내용을 코드로 구현하기 위해서는 한 파일에 코드를 쭉~ 작성해서 필요한 메서드나 변수들을 활용해도 동작하는데 문제는 없을 것이다. (물론 호이스팅 등 신경써야 하는 부분들은 많겠지만..!) 하지만, 프로젝트의 규모가 커짐에 따라 코드의 관리 및 유지보수를 편리하고 안전하게 하기 위해, 일정한 기준을 세워 기준별로 코드를 나누는 방식으로 코드를 분할하는데, 이를 모듈화(modulization)라고 할 수 있다. **각 스크립트 파일을 하..