implementation-pattern-by-kent
  Dashboard > 소프트웨어 디자인 스터디 > ... > 2008_swdesign_s2 > implementation-pattern-by-kent
Community
  소프트웨어 디자인 스터디 Log In | Sign Up   View a printable version of the current page.  
Added by 장회수, last edited by Jeong-Hun Kim on 10월 02, 2008  (view change)
Labels: 
(None)

어제 발표한 내용 입니다.

▶ImplementationPattern
클래스
-클래스
로직을 어떻게 클래스 단위로 잘 구성할 것인가?
-단순한 상위클래스 이름
상위클래스의 이름은 단순하게 하자
-한정적 하위클래스 이름
상위 클래스에 수식어 붙이는 경우
중요 개념을 포함하는 경우
-추상 인터페이스
인터페이스를 사용하여 설계상의 결정을 필요이상으로 노출 하지 마라.
-인터페이스
인터페이스를 사용하면 구현을 변경하기는 용이하다.
-버전 인터페이스
interface에 extends 사용하기.
-추상 클래스
Interface는 변경시 관련 클래스를 모두 변경해야 하지만 추상 클래스는 기존 구현을 망가뜨리지 않고 새로운 연산을 추가 할 수 있다.
-값 객체
변화하는 상태를 가진 객체
값 스타일의 객체
-특화
간단한 변형은 상태만 바꾸는 것
가장 복잡한 변형은 로직 자체를 바꾸는 것.
-하위클래스
특정 부분을 제외하고 상위 클래스와 같다.
상위클래스의 로직을 여러 개의 메소드로 잘개 쪼개라
-구현자
다형적 메시지 구현 - 선택의 표현
-내부클래스
작은 전용 클래스
-인스턴스별 행동
인스턴스들은 같은 로직 공유
-조건문
인스턴스는 다른 로직을 수행하면서 모든 로직이 하나의 클래스에 들어감.
-위임
public void mouseDown()

Unknown macro: { getTool().mouseDown(); }

-플러그인 선택자
단일 클래스에 여러 메소드를 호출 하도록 구현
-익명 내부 클래스
클래스 생성후 특정 지역에서만 사용하므로 이름이 필요치 않음.
-라이브러리 클래스
마땅히 들어갈 곳이 없는 메소드들을 묶어서 정적 메소드로 표현 함.
상태
-상태
시간에 따른 변화
-접근
접근을 제한하여 유연성 조절
-직접 접근
객체 내의 상태를 직접 접근
-간접 접근
메소드를 통해 상태에 접근
-공용 상태
필드에 저장 공용 사용.
-가변 상태
메소드에 파라메터로 값을 받고 return 하는 형태
-외재 상태
Map을 사용하여 객체를 키로 저장된 위치를 데이터로 사용.
-변수
상태 접근에 필요한 네임스페이스.
-지역 변수
단일 범위내의 유효 상태
-필드
객체 생성~ 소멸 까지
-파라미터
상태의 전달
-수집 파라미터
return을 통한 여러 복잡한 결과를 도출
-파라미터 객체
여러 개의 파라메터가 함게 여러 메소드로 전달 되는 경우 하나의 객체로 빼냄.
-상수
변하지 않는 것은 상수로 지정
-역할 제시형 작명
변수 이름은 역할을 반영한다.
-선언형 타입
ArrayList 보다는 List라고 선언하여 많은 정보를 함축.
-초기화
선언과 함께 초기화 하라.
초기화 비용이 많이 드는 경우는 분리하라.
-열성적 초기화
선언문에서 초기화
-게으른 초기화
객체가 호출될 때 초기화

행위
-제어 흐름
연산을 여러 단계로 나눔
-주요 흐름
주요 흐름을 명확히 알도록 코딩
-메시지
제어 흐름을 프로시저 호출로 명확히 알도록 함.
-선택 메시지
파라메터를 이용하여 선택적으로 메시지를 구현 한다.
-더블 디스패치
두개의 선택 메시지를 직렬로 연결
-분리 메시지
복잡한 연산을 나눔.
-되도림 메시지
대칭성을 이용하여 가독성을 높임.
-초청 메시지
하위 클래스가 존재 할 경우를 대비하여 변형의 여지를 둠.
-설명 메시지
highlight()

Unknown macro: { reverse(area); }

-예외 흐름
예외도 가능한 명료하게.
-보호 구문
if(isInitialized())?????
-예외
지역적으로 생성한 예외가 아니라면 정규 예외 프로세스를 타도록 한다.
-체크 예외
예외는 무조건 뭐든지 처리 하라. 갑자기 죽지 않도록.
-예외 전달
하위 예외가 나왔을 때 사용자에게 보일 때는 포장하라.

메소드
-조합 메소드
다른 메소드 호출로 메소드 작성
-의도 제시형 이름
의도를 나타냄
-메소드 가시성
가급적 private
-메소드 객체
복잡한 객체는 새로운 객체로
-오버라이드 메소드
특화를 위한 오버라이드
-오버로드 메소드
같은 연산 다른 인터페이스
-메소드 반환 타입
일반적 반환 타입 선택
-메소드 주석
중복된 주석이 아닌 필요한 주석을 달아라.
-도우미 메소드
retrun testClass.getConstructor().newInstance();
return getTestConstructor().newInstance();
-디버그 출력 메소드
toString() 을 전달하라.
-변환
객체의 형태 변환
-변환 메소드
원본 객체에서 변환된 객체 변환
-변환 생성자
원본 객체를 파라메터로 취하여 대상 객체 반환.
-생성
객체를 생성
-완결 생성자
완결된 형태를 가진 생성자를 하나 만들어서 기본 초기화를 하도록 한다.
-공장 메소드
복잡한 객체 생성시 생성자가 아닌 메소드에서 생성 함.
-내부 공장
객체 생성을 전용으로 할 수 없을 경우 내부 공장(새로운 객체 생성)을 돌림.
-컬렉션 접근자 메소드
컬렉션 접근 방법 중 취득 메소드를 제공하는 방법
-불린 설정 메소드
불린 값을 설정하는 두개의 메소드를 제공.
-쿼리 메소드
isVisible() 과 같은 메소드.
-동등성 메소드
객체의 동등성 검사 instanceof
-취득 메소드
필드값 반환하는 메소드 설정 getX();
-설정 메소드
필드값 설정 메소드 setX();
-안전한 복사
get 이나 set method 의 사용시 각각의 접근과 관련하여 메소드 수행전에 리스트를 따로 보관하는 방법
컬렉션

  • 배열 - 크기 고정
  • Iterable - 순차열람.
  • Collection - 원소 추가 제거
  • List - 원소의 순서가 정의 됨
  • Set - 중복 없음
  • SortedSet - 중복 없음, 순차적
  • Map - 키에 의해 원소 저장 및 접근.
    발전하는 프레임워크
  • 프레임워크 지속적 발전, 기존 클라이언트 코드는 계속 동작.
  • 합집합이 아닌 교집합.

Site running on a free Atlassian Confluence Open Source Project License granted to JavaJiGi Project. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.3.1 Build:#643 1월 22, 2007) - Bug/feature request - Contact Administrators