java 디자인패턴 1일차

GoF 의 자바 디자인 패턴, 인프런 강의

코드 링크

1. 전략 패턴

  • 인터페이스
    • 기능에 대한 선언과 구현 분리
    • 기능을 사용하는 통로
  • 델리케이트
    • 위임하다. 다른객체의 기능을 사용한다.
  • 전략 패턴
    • 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)을 만들어 접근점에서 서로 교환 가능하도록 하는 패턴
  1. 요구사항
    • 신작 게임에서 케릭터와 무기를 구현
    • 무기는 두가지 종류
    • 칼 , 검
    • weapon 이라는 인터페이스를 만들고
    • 칼 이라는 객체를 웨폰으로 구현 함
    • 케릭터는 웨폰이라는 교환 가능한 무기를 가지고 공격 한다.
    • 무기는 교환 가능 하다.
      • 유지보수
      • 도끼 추가

2. 어댑터 패턴

  • 연관성 없는 두 객체를 묶어 사용하기
  • 알고리즘을 요구상항에 맞춰 사용 가능함
  • 220볼트 코드에 110볼트 코드를 추가 하기 위해 돼지코를 사용하는 내용!@
  • 기존 알고리즘은 사용, 알고리즘 추가나 알고리즘 인자 변경등이 가능함
  1. 요구사항
    • 두 수에 대한 연산을 수행하는 객체 만들기
    • 수의 두 배의 수를 반환 => Double twiceOf(Float num);
    • 수의 반의수를 반환 => Double halfOf(Float num);
    • 구현 객체 이름은 Adapter
    • Math 클래스에서 두 배와 절반을 구하는 함수는 이미 구현 됨(double twoTime(double num))
    • 어댑터에 추가 기능을 넣을수 있다.

3. 템플릿 메소드 패턴

  • 일정한 프로세스를 가진 요구사항을 템플릿 메소드 패턴을 이용하여 구한 한다.
  • 모양자를 템플릿이라고 생각, 다른색 펜으로 그리면 달라짐
  • 알고리즘의 구조를 메소드에 정의, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴
    • 구현하려는 알고리즘이 일정한 프로세스가 있다
    • 구현하려는 알고리즘은 변경 가능하다.
  • 알고리즘은 여러단계
  • 나눠진 알고리즘을 메소드로 선언
  • 알고리즘을 수행할 템플릿 메소드를 만든다.
  • 하위클래스에서 구현 한다.
  1. 요구사항
    • 접속을 구현해 주세요 -> requestConnection
      • 보안 과정 -> doSecurity
      • 인증 과정 -> authentication
      • 권한 과정 -> authorization
      • 접속 과정 -> connection
  2. 내용
    • 순서
      • 여러단계로 나누기 -> 메소드 선언 -> 템플릿 메소드 -> 하위 클래스에서 구현
    • 추상 클래스 생성(접두사를 활용하자)
    • 외부에서 재정의 해야 하고 사용금지 시킬때 protect(패키지나눠서 잘)
  3. 추가 개발
    • 하위 클래스에서 즉 구현부에서 수정

4. 팩토리 매소드 패턴

  • 팩토리 메소드 패턴에서 템플릿 메소드 패턴의 사용됨을 안다.
  • 팩토리 메소드 패턴에서의 구조와 구현의 분리를 이해하고 구조와 구현의 분리 장점을 안다.
    1. 요구사항
      • 게임 아이템과 아이템을 생성을 구현해주세요.
      • 아이템을 생성하기 전에 데이터 베이스에서 아이템 정보를 요구사항
      • 아이템 생성후 데이터 베이스에 정보를 남김
      • 아이템 생성 주체는 ItemCreator로 이름 짓습니다.
      • 아이템은 item 이라는 인터페이스로 다룰수 있음
      • use 함수를 기본 함수로 갖고 있습니다.
      • 아이템 종류는 물약1, 물약2 가 있습니다.

4. 싱글톤 패턴

  • 객체 : 속성과 기능을 갖춘 것
  • 클래스 : 속성과 기능을 정의한 것
  • 인스턴스 : 속성과 기능ㅇ을 가진 것 중 실제 하는것
  • 자동차 => 객체
  • 자동차 설계도 => 클래스
  • 실제 자동차 => 인스턴스

PyeongHo

즐겁게 또 즐겁게