Skip to content

aaaicu/design-patterns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

design-patterns [디자인패턴 훈련하기]

취지

  • 디자인 패턴은 연습이 필요하다.

  • 패턴에 대해서 알고 있고 이해하고 있더라도 개발에 적용하려고 하면 머뭇거리게 되는건 연습이 되어있지 않아서이지 않을까

  • 마치 운동선수가 훈련하듯 다양한 주제로 연습을해보면 도움이 되지 않을까

시나리오

1. 생성 관련 패턴

1) 팩토리 메서드 패턴

Creator

시나리오 1. 중고거래자 생성

seconhand-tradepng

  • 거래자 별로 다른 행동을 하는 거래자를 생성하는 시나리오
  • 거래자 종류 : 구매자, 판매자, 쿨구매자, 쿨판매자
    • 구매자 : 구매 가격 협의 제안
    • 판매자 : 판매 가격 협의 제안
    • 쿨구매자 : 구매 가격 제안 → 수락 요청
    • 쿨판매자 : 판매가격 제안 → 수락 요청

시나리오 2. 비행기 생성

ClassDiagram

  • 비행기를 만드는 공장
  • 비행기 종류
    • 구식 비행기
    • 신식 비행기

2) 추상 팩토리 패턴

2. 구조 관련 패턴

1) 어댑터 패턴
2) 데코레이터 패턴

3. 행동 관련 패턴

1) 옵저버 패턴

2) 전략 패턴

3) 상태 패턴

시나리오 1. 속도 구간에 따라 제어되는 자동차
  • 속도가 빨라질 수록 자동차에서는 조작을 불가하게 만들 수 있게 만드는 시나리오

  • 상태에 따른 변화

    • 시속 0km : 사람을 태울 수 있음
    • 시속 1~30km : 사람을 태울 수 없고 이외에는 아무 제한하지 않음
    • 시속 61~80km : 창문 높이를 제한한다. (창문 높이가 제한 높이보다 낮으면 최저 높이까지 자동으로 조정한다.)
  • 느낀점 & 후기

    • 적용하고 나니 상태에 따른 동작이 명확하게 보임
    • 각 상태는 Context (예제에서는 Car)를 갖고 있어야 함
    • 각 상태 안에 있는 Context를 사용해서 현상태를 변경할 수도 있음
    • Context 내에 상태를 변경할 수 있는 메서드가 있어야 함

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages