트리와 그래프는 명확한 차이가 있지만 노드에 접근하는 방식의 유사성에 기반한 해석
Preorder방식의 트리 순회
LevelOrder방식의 트리 순회
그래프의 모든 노드를 방문할 때, 비용이 최소가 되는 방법
현재 연결된 노드 집합에서 최소 비용의 간선과 연결된 노드 선택
연결되지 않은 노드 집합들 중에서 최소 비용 간선 선택
UML의 Class Diagram에서 사용되는 문법과 동일해보임
객체 생성 - 점선
객체 소유 - 실선
상속 - 수직선과 삼각형
(부분)집합 - 마름모
다수 참조 - 칠해진 원
추상클래스 - 이탤릭체
사용자 관점으로 시스템 표현
클래스간의 관계
클래스의 시간에 흐름
객체와 객체의 메시지 중심
시퀸스와 유사(흐름과 관계)
객체의 생명 주기동안의 상태
수행 순서, 업무 처리 과정
Sequence보다 추상적인 느낌
Usecase의 1개의 flow가 Activity의 1개의 Action
Software의 물리적 구조
exe, dll, lib파일의 참조 관계
하드웨어 배치 관계
특정 시간에 모델링된 시스템의 구조
클래스의 인스턴스로 표현
클래스 다이어그램보다 더 구체적
프로그램 개발 과정에서 자주 나타는 문제를 해결하기 위한 방법, 구조적 해결법
이름, 문제, 해법, 결과
이중, 어떤 상황에서 사용해야 하는가를 나타내는 '문제'를 중점적으로 분석
If-else구문의 최소화
수정에 대한 병경사항 최소화(변경의 국지화)
데이터, 초기값, 데이터 가공 절차
텍스트, 체크박스 같은 출력
Model과 View를 이용한 실질적인 연산, 비지니스 로직으로 해석해도 될 듯
ex) OS에 따라 문서 작성 프로그램이 달라질 수 있다(메모장, vim)
제품군 단위로 Factory를 생성한 후 Factory로 부터 제품(객체)를 받아옴
변경 가능성이 있는 부분을 한 곳(Factory)로 모음
ex) 문서의 확장자가 어플리케이션마다 연관되어 있음(hwp-한글, doc-word)
대행함수를 통해서 간접적으로 객체를 생성
디자인 패턴의 가장 큰 전제인 '변경되는 부분과 변경되지 않는 부분을 분리한다'라는 관점에서 굳이 두 패턴이 큰 차이는 없다고 생각됨
결국 생성을 담당하는 Factory클래스를 구현하고, 구체적으로 생성하는 인스턴스는 SubFactory에서 결정한다는 공통점이 존재
단지 Abstract Factory의 경우 제품'군'으로 묶는다는 특징이 있는거 말고는 큰 차이를 이해할 수 없음
그런 관점에서 Factory Method를 좀 더 세밀하게 구현한 것이 Abstract Factory같다고 생각됨