GoF 의 자바 디자인 패턴, 인프런 강의
코드 링크
1. 전략 패턴
- 인터페이스
- 기능에 대한 선언과 구현 분리
- 기능을 사용하는 통로
- 델리케이트
- 위임하다. 다른객체의 기능을 사용한다.
- 전략 패턴
- 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)을 만들어 접근점에서 서로 교환 가능하도록 하는 패턴
- 요구사항
- 신작 게임에서 케릭터와 무기를 구현
- 무기는 두가지 종류
- 칼 , 검
- weapon 이라는 인터페이스를 만들고
- 칼 이라는 객체를 웨폰으로 구현 함
- 케릭터는 웨폰이라는 교환 가능한 무기를 가지고 공격 한다.
- 무기는 교환 가능 하다.
- 유지보수
- 도끼 추가
2. 어댑터 패턴
- 연관성 없는 두 객체를 묶어 사용하기
- 알고리즘을 요구상항에 맞춰 사용 가능함
- 220볼트 코드에 110볼트 코드를 추가 하기 위해 돼지코를 사용하는 내용!@
- 기존 알고리즘은 사용, 알고리즘 추가나 알고리즘 인자 변경등이 가능함
- 요구사항
- 두 수에 대한 연산을 수행하는 객체 만들기
- 수의 두 배의 수를 반환 => Double twiceOf(Float num);
- 수의 반의수를 반환 => Double halfOf(Float num);
- 구현 객체 이름은 Adapter
- Math 클래스에서 두 배와 절반을 구하는 함수는 이미 구현 됨(double twoTime(double num))
- 어댑터에 추가 기능을 넣을수 있다.
3. 템플릿 메소드 패턴
- 일정한 프로세스를 가진 요구사항을 템플릿 메소드 패턴을 이용하여 구한 한다.
- 모양자를 템플릿이라고 생각, 다른색 펜으로 그리면 달라짐
- 알고리즘의 구조를 메소드에 정의, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴
- 구현하려는 알고리즘이 일정한 프로세스가 있다
- 구현하려는 알고리즘은 변경 가능하다.
- 알고리즘은 여러단계
- 나눠진 알고리즘을 메소드로 선언
- 알고리즘을 수행할 템플릿 메소드를 만든다.
- 하위클래스에서 구현 한다.
- 요구사항
- 접속을 구현해 주세요 -> requestConnection
- 보안 과정 -> doSecurity
- 인증 과정 -> authentication
- 권한 과정 -> authorization
- 접속 과정 -> connection
- 접속을 구현해 주세요 -> requestConnection
- 내용
- 순서
- 여러단계로 나누기 -> 메소드 선언 -> 템플릿 메소드 -> 하위 클래스에서 구현
- 추상 클래스 생성(접두사를 활용하자)
- 외부에서 재정의 해야 하고 사용금지 시킬때 protect(패키지나눠서 잘)
- 순서
- 추가 개발
- 하위 클래스에서 즉 구현부에서 수정
4. 팩토리 매소드 패턴
- 팩토리 메소드 패턴에서 템플릿 메소드 패턴의 사용됨을 안다.
- 팩토리 메소드 패턴에서의 구조와 구현의 분리를 이해하고 구조와 구현의 분리 장점을 안다.
- 요구사항
- 게임 아이템과 아이템을 생성을 구현해주세요.
- 아이템을 생성하기 전에 데이터 베이스에서 아이템 정보를 요구사항
- 아이템 생성후 데이터 베이스에 정보를 남김
- 아이템 생성 주체는 ItemCreator로 이름 짓습니다.
- 아이템은 item 이라는 인터페이스로 다룰수 있음
- use 함수를 기본 함수로 갖고 있습니다.
- 아이템 종류는 물약1, 물약2 가 있습니다.
- 요구사항
4. 싱글톤 패턴
- 객체 : 속성과 기능을 갖춘 것
- 클래스 : 속성과 기능을 정의한 것
- 인스턴스 : 속성과 기능ㅇ을 가진 것 중 실제 하는것
- 자동차 => 객체
- 자동차 설계도 => 클래스
- 실제 자동차 => 인스턴스