참가자

제한재홍광필문혜영김문수강은지박상도Jhang JhinDhal신용우서경진, 남규진, 박용훈고은비이충일


https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4/

http://doohyun.tistory.com/56?category=714942

https://www.tutorialspoint.com/design_pattern/index.htm

https://java-design-patterns.com/

https://refactoring.guru/design-patterns

https://sourcemaking.com/design_patterns/


git repository

https://github.com/zebmason/GoFRefactored/blob/master/README.md

https://github.com/iluwatar/java-design-patterns

https://github.com/mariofusco/from-gof-to-lambda


목표

OOP 개발 패턴을 실습을 통해 확실히 이해하여 실무에 즉각 활용할 수 있도록 한다.
 - 개발자간의 의사소통 원할
 - 재사용 및 유지보수성 증가

커리큘럼

1~3 GoF 디자인패턴 이론

  각 패턴의 목적과 활용방법에 대한 지식을 습득하고 실무 서비스로직에 적용 중인 패턴을 공유한다.

  1주차 - OOP, UML 그리고 생성 패턴

패턴명in JDKin Practice발표자
OOP 기초, 패턴 구조객체 지향 프로그래밍의 원칙과 패턴을 읽는 구조에 대해 발표합니다.
UML 읽기책에 있는 UML 을 읽을 수 있도록 간단한 내용 정리
Abstract Factoryjavax.xml.xpath.XPathFactory
Builderjava.lang.StringBuilder
Factory Method java.util.Calendar
Prototypejava.lang.Object#clone()
Singletonjava.lang.Runtime#getRuntime()내부캐시


  2주차 - 구조 패턴 

패턴명in JDKin Practice발표자
Adapter

java.util.Arrays#asList()

java.io.InputStreamReader


Bridgejava.util.Collections#newSetFromMap()
Compositejava.awt.Component
Decoratorjava.util.Collections#synchronizedXXX()
Facadejavax.faces.context.ExternalContextslf4j, 주문service
Flyweightjava.lang.Integer#valueOf(int)
Proxyjava.lang.reflect.Proxy


  3주차 - 행위 패턴

패턴명in JDKin Practice발표자
Chain of Responsibilityjava.util.logging.Logger#log()
Commandjava.lang.Runnable
Interpreterjava.util.Pattern
Iteratorjava.util.Iterator
Mediatorjava.util.concurrent.Executor#execute()
Mementojava.util.Date
Observerjava.util.EventListener
Statejavax.faces.lifecycle.Lifecycle#execute()

방송상태에따른 처리

- 시작

- 종료

Strategyjava.util.Comparator#compare()

목록 정렬 전략

- 최신순 정렬

- 특정 아이템 최상위 정렬

Template Method java.util.AbstractList

할인쿠폰

- 금액할인쿠폰

- %할인쿠폰

Visitorjava.nio.file.FileVisitor


4~6 기본 & 자주쓰는 디자인 패턴 특화 실습

  https://github.com/iluwatar/java-design-patterns

  난이도 Beginner 인 패턴들을 위주로 각 패턴에 특화된 요구사항을 정의하고 패턴을 적용하여 구현해보는 실습을 진행합니다.


7~9 디자인 패턴 실습

  이론으로 학습한 패턴을 실제로 어플리케이션에 구현하는 작업을 합니다. 구현할 대상은 간단한 주가 데이터 크롤러 및 거래 알고리즘 및 시뮬레이터 입니다. 스터디 리더의 언어와 같은 언어로 같이 프로젝트에 참여할 수도 있고, 새로 객체 지향을 배워본 언어에 개인적으로 적용하고 코드리뷰를 함께 할 수 있습니다. (파이썬, 자바 예정)

  7주차 - 요구사항 정의 및 데이터 크롤링

  8주차 - 알고리즘에 기반하여 ETF 트레이딩을 구현하고 계좌 수익률 구현

  9주차 - 알고리즘 시뮬레이터 구현