GoF 의 자바 디자인 패턴, 인프런 강의
코드 링크
5. 프로토타입 패턴
- 복잡한 인스턴스를 복사 할 수 있다
- 복사할 원형
- 생산 비용이 높은 인스턴스를 복사 한다.
- 종류가 너무 많아서 클래스로 정리되지 않는다.
- 클래스로부터 인스턴스 생성이 어렵다.
- 요구사항
- 어떤 모양을 그릴 수 있도록 하고 복사 붙혀넣기 기능 구현
- 구현
- 요구사항
- 자바에는 이미 clone 가 가능함
- implements Cloneable 를 사용하면 사용 할 수 있다.
- 요구사항
- 복사 후 붙혀 넣기를 하면 두 도형이 겹치는데 안겹치도록 살짝 옆으로
- 알아두면 좋은 복사
- 깊은 복사
- clone 를 이용하여 값을 복사해서 생각 하는 2개의 인스턴스
- 문제점 기본 변수는 가능 하지만 사용자 클래스는 깊은 복사가 안 일어남
- 얕은 복사
- 주소값을 복사한다. = 을 사용해서 대입 할때
6.1 빌더 패턴(책)
- 복잡한 단계가 필요한 인스턴스 생성을 패턴을 통해 구현
- 생각의 흐름
- 컴퓨터 컴1 = 뉴 컴퓨터(사양1, 사양2 ,…);
- 위 처럼 가능 하지만 너무 복잡하고 길어짐
- 그래서 다른 클래스에서 만들온다.
- 빌더 패턴 생각의 흐름
- 공장을 만든다.
- 공장에서 설계도를 받는다.
- 추상으로 만들어서 원하는 설계도만 추가하면 간단하게 만들 수 있다.
- 공장에서 설계도로 만든다.
- 공장에서 결과를 반환 한다.
- 생각의 흐름
6.2 빌더 패턴(현장)
- 많은 변수를 가진 객체의 생성을 가독성 높도록 코딩
-
Computer com = ComputerBuilder .start() .setCpu("i7") .setRam("8g") .setStrorage("256g ssd") .buid();
#### 7.1 추상 팩토리 패턴
- 관련 있는 객체의 생성을 가상화 한다.
- 바이크팩토리 패토리 = 뉴 삼천리바이크팩토리 팩토리.바디생성 팩토리.휠생성
- 위 흐름 처럼 원하는공장을 만들고 원하는 결과를 만든다.