Implementation Patterns

16 posts

켄트백의 구현패턴-발전하는 프레임워크(2)

발전하는 프레임워크 호환성을 유지하는 업그레이드 객체 추상화 구현 스타일을 사용하려면 추상화된 개념은 인터페이스로 전달해야 하는지 상위클래스로 전달해야하는지 결정해야한다. 인터페이스 인터페이스를 클라이언트에게 제공할때의 이점은 세부사항을 가급적 적게 드러낸다는 것이다. 단점은 인터페이스가 수정이 되면 구현하지 않는 경우

5 min read

켄트백의 구현패턴-발전하는 프레임워크(1)

발전하는 프레임워크 코드를 이해하고 커뮤니케이션하는 데 드는 비용에 비해 코드를 수정에 드는 비용이 훨씬 저렴하다고 가정했다. 애플리케이션 수정 없이 프레임워크 수정하기 프레임워크를 지속적으로 발전시켜야 하지만 기존 클라이언트 코드는 계속해서 동작하도록 해야한다는것 프레임워크 개발의 경제성을 향상시키려면 호환성이 유지되지

5 min read

켄트백의 구현패턴-컬렉션(2)

컬렉션 구현 구현 클래스를 구현을 선택할때 요소 성능 컬렉션의 크기 Collection Collection 인터페이스에 기본 구현 클래스는 ArrayList 이다. ArrayList의 성능상 문제가 될만한 부분은 contains와 이 메소드를 이용하는 다른 메소드들이 있다. 성능이 문제가 된다면 HashSet으로 바꾸는것

3 min read

켄트백의 구현패턴-컬렉션(1)

컬렉션 컬렉션의 개념은 여러가지 메타포를 혼합한 것이다. 과거 컬렉션과 유사한 행위는 자료구조 자체에 링크를 넣는 방식으로 구현 컬렉션은 프로그래밍에 있어 가장 근본적인 변형인 몇 개의 데이터를 사용하느냐를 표현한다는 점에서 중요하다. 로직의 변경은 조건문이나 다형성 메시지를 통해 표현할수 있다. 하지만 데이터 갯수의 변

7 min read

켄트백의 구현패턴-메소드(4)

메소드 컬렉션 접근자 메소드 컬렉션에 대한 접근을 어떻게 제공할꺼냐? 간단한 방법은 getter 메소드를 제공해주는것인데 반환 하기전에 수정할수 없는 컬렉션으로 반환 하는것이다. 만약 하나씩 접근한다면 순차열람자를 반환하는 메소드를 제공해라 불린 설정 메소드 불린 살태를 설정하는 가장 좋은 프로토콜은 설정 메소드를 사용하

3 min read

켄트백의 구현패턴-메소드(3)

메소드 오버라이드 오버라이드를 사용하면 변형 메소드를 명확하게 표현할 수 있다 상위 클래스에서 메소드를 abstract로 선언 했다면 이는 하위클래스에서 연산을 특화하라는 뜻이다. super.method() 이런식에 호출을 해서 사용할수있지만 하위 클래스의 같은 이름에 메소드에서만 사용하는 것이 좋다. 제어의 흐름을 재구

8 min read

켄트백의 구현패턴-메소드(2)

메소드 조합 메소드 추상화 수준이 비슷한 메소드 호출로 하나의 메소드를 구성 읽기좋은 메소드의 길이 5 15줄을 넘어가면 안된다고 한다. 전체 구조를 읽을때는 긴메소드가 좋다 하지만 세부사항을 이해하려할때 긴메소드는 방해가 된다. 메소드의 크기를 결정하는 다른 요소는 특화 이다. 적당한 크기의 메소드면 메소드를 하위로 복

6 min read

켄트백의 구현패턴-메소드(1)

메소드 로직은 하나의 덩어리가 아닌 여러 개의 메소드로 구성된다. 개념적으로 임의의 프로그램은 복잡한 제어 흐름이 들어 있는 커다란 루틴이라 볼수 있다. 가장 큰 문제는 코드를 읽기 어렵다는 것이다. 거대한 루틴으로 작성하면 코드 재사용이 어렵다. 프로그래밍 도중에 같은 기능을 구현하는 쪽을 분리하는 것도 어렵다. 프로그

5 min read

켄트백의 구현패턴-행위

행위 행위를 표현하는 패턴 제어흐름 연산의 여러 단계로 나타낸다. 주요흐름 주요제어 흐름을 명확하게 표현 메시지 메시지를 보내서 제어 흐름을 표현 선택 메시지 여러 선택 사항을 나타내기 위해 메시지 구현자를 다양화 더블 디스패치 두가지 축으로 메시지 구현자를 다양화해서 중첩된 선택을 표현 분리 메시지 복잡한 연산은 밀접한

7 min read

켄트백의 구현패턴-상태(2)

상태 지역 변수 지역 변수는 사용되기 직전에 가급적 최소 범위내에서 선언하라. 지역변수의 역할 컬렉터 이후 사용을 위한 정보를 모은다. 카운터 특정 객체의 수를 저장하는 특수 컬렉터 설명 복잡한 표현을 해야 하는 경우, 표현 내용을 지역 변수에 저장하면 독자가 좀더 쉽게 이해 재사용 값이 바뀌지만 기존 값을 다시 사용해야

6 min read

켄트백의 구현패턴-상태(1)

상태 객체는 외부에 드러나는 행위와 행위를 지원하기 위한 상태를 묶어주는 편리한 단위다. 상태 시간에 따라 변화하는 값을 사용하여 연산 접근 상태에 대한 접근을 제한해서 유연성을 조절 직접 접근 객체 내의 상태를 직접 접근 간접 접근 좀더나은 유연성을 위해 메소드를 통해 상태에 접근 공용 상태 클래스의 모든 인스턴스에 적

7 min read

켄트백의 구현패턴-클래스(2)

클래스 하위클래스 이 객체는 상위클래스와 같다. 이 부분만 제외 하면... 라고 말하는거와 같다. 하위 클래스의 문제점 일단 사용하면 되돌리기 어렵다. 하위 클래스를 이해하기 위해서 상위 클래스를 이해해야 한다. 하위 클래스가 상위 클래스 세부 구현 특성에 의존할 수 있으므로 상위클래스의 수정이 위험해진다. 클래스 상속

6 min read

켄트백의 구현패턴-클래스(1)

클래스 플라톤은 현실 세계에 존재하는 것은 클래스의 인스턴스일 뿐이라고 이야기했다. 클래스 "이 데이터들은 함께 사용되는데, 그에 관련된 로직이 이것이다." 단순한 상위클래스 이름 클래스 계층의 최상위에 위치하는 클래스 이름은 단순하게 짓는다. 한정적 하위클래스 이름 상위클래스와의 유사점과 차이점을 분명히 드러내는 이름을

8 min read

켄트백의 구현패턴-동기유발

동기유발 소프트웨어 설계의 원동력은 경제성이라고 이야기 했다. 소프트웨어 개발후 개발 보다 유지보수 비용이 더들어간다는 사실을 알고 놀랐다. 유지 비용 = 이해 비용 + 수정비용 + 테스트 비용 + 설치 비용 구현 패턴은 미래 코드 확장이나 수정이 쉬운 깔끔한 코드를 추구하면서도 당장 얻을 수 있는 이득에도 초점을 맞춘다

1 min read

켄트백의 구현패턴-프로그래밍 이론

프로그래밍 이론 결정사항에 영향을 미치는 많은 동력이 있다 여기선 가치와 원칙 2가지로 나눈다. 가치는 모든 프로그래밍에 적용되는 주제 원칙은 가치처럼 언제나 적용되는 것은 아니지만 항상 중요하지만 때로는 직접 적용하기 어려운 가치와 적용법은 명확하지만 조금은 지엽적인 패턴사이의 가교 역활을 하는것 결정이 애매한 사항에

6 min read

켄트백의 구현패턴-패턴

패턴 프로그램을 새로 짜는 경우보다는 기존 프로그램을 읽는 경우가 많다. 프로그램에 있어 완성은 없다. 수정에 대한 공수가 더 많이 든다. 프로그램 구조는 몇가지 상태와 제어 흐름 개념으로 결정된다. 프로그램을 읽는 사람은 개념과 더불어 세부 사항까지도 이해해야 한다. 패턴은 위와 같은 공통점을 기반으로 한다. 읽기 쉽과

2 min read