개발 · 프로그래밍

/

개발 · 프로그래밍 기타

은종쌤과 자바로 디자인 패턴 쉽게 시작하기

디자인 패턴을 학습하여 유연하고 확장성 있는 객체지향 프로그래밍을 구현할 수 있습니다. 실제 현업에서 사용할 수 있는 여러 패턴들을 학습하여 프로젝트와 코드 리팩토링에 적용해보세요

(4.6) 수강평 7개

수강생 198명

Thumbnail

초급자를 위해 준비한
[디자인 패턴, 객체지향] 강의입니다.

이런 걸
배워요!

  • 디자인 패턴

  • 객체지향프로그래밍

  • 리펙토링

  • 자바

카카오 사내 개발자 교육 강의!
엄선된 디자인 패턴만 골라 배워요 🤓

실제 사례로 배우는 디자인 패턴 ✨

현재 여러 시스템이 객체지향 프로그래밍 언어로 개발되고 있는 이유가 뭘까요? 시스템이나 솔루션 개발 후 기능의 확장, 요구사항 변경, 유지보수를 좀 더 효율적으로 하기 위함입니다. 이러한 변경들이 쉬우려면 그 설계 단계부터 제대로 된 객체 지향 설계가 이루어져야 합니다. 디자인 패턴을 학습하면 설계에 대한 여러 솔루션을 이해하고 적용할 수 있어요.

왜 디자인 패턴을 공부해야 할까요? 🤔

반복적으로 발생하는 문제에 동일한 솔루션이 적용될 수 있다면, 이런 설계를 패턴이라고 합니다. 디자인 패턴은 처음 4명의 학자 GoF가 여러 기존의 시스템과 소프트웨어를 분석하여 각 문제에 대한 가장 합리적인 솔루션의 방향을 정리해 놓은 분야입니다. 따라서 디자인 패턴은 어떤 규칙이나 문법은 아닙니다. 또한 언어에 국한되지 않고 객체지향 언어라고 하면 다 적용될 수 있습니다.

개발자들은 유연하고 유지보수하기 좋은 프로그램을 개발하기 위해 프레임워크도 가져다 쓰고 좋은 방법론을 사용합니다. 디자인 패턴은 여러 프레임워크에도 이미 적용되어 있습니다. 패턴 자체에 대한 학습도 의미가 있지만, 문제 해결에 효율적인 솔루션을 설계했다면 자신만의 패턴도 만들 수 있습니다.


이번 강의는 카카오 사내 개발자 교육 영상으로 활용되는 강의입니다. 자바 문법을 알고 있지만, 클래스를 활용한 객체 지향 설계가 어려운 분들이 디자인 패턴을 통해 학습하는 데 도움을 드리고자 제작되었습니다. GoF에서 소개한 23가지 패턴이 있는데, 이번 강의에선 실제 현업에서 많이 쓰고 실무에 유용한 패턴 16개만 추려서 소개해 드립니다. 다른 프레임워크나 라이브러리에서도 많이 적용되었고 많이 사용하고 있는 패턴들만 압축적으로 공부하세요! 이걸 공부하면 나중에 프레임워크를 이해하는 데에도 도움이 될 거예요.

쉽고 재밌는 예제로 학습하기 ✨

  • 각 패턴을 예제를 통해 쉽게 이해할 수 있어요.
  • 샘플 코드를 주고 디자인 패턴을 적용해서 확장성 있게 코드 리팩토링을 합니다. 패턴 적용을 통해 바뀌는 코드를 보면서 학습할 수 있어요.
  • 현업에 적용할 수 있는 설계 방법들을 알려드려요.

이런 분들께 추천해요 🙋‍♀️

객체 지향 프로그래밍을 어떻게 할지 모르겠는 분

개발자 취업준비생이나 신입 혹은 주니어 개발자

자바를 이용한 OOP 개발을 경험해보고 싶은 분

프레임워크 공부 전에 디자인 원리를 이해하고 싶은 분


이런 걸 배워요 🤓

- Strategy 패턴의 학습 예

1. 문제가 무엇인가?

  • 이 패턴이 나오게 된 문제가 되는 상황은 무엇인지, 이 패턴이 설계하고 개선하고자 하는 의도는 무엇인지를 먼저 설명합니다.


2. 클래스 다이어그램을 통한 패턴 이해하기

  • 클래스 다이어그램과 현실성 있고 쉬운 예제를 통하여 패턴이 어떻게 적용되는지에 대하여 학습합니다.

 

3. 현실적인 예제를 통한 패턴 적용 및 리팩토링

📢 수강 전 확인해주세요!

  • GitLab 주소와 강의에서 사용되는 소스 GitHub 주소는 섹션 1의 Factory Method 강의 하단의 강의노트에서 확인하실 수 있습니다.

수강 후기 미리보기 📜

*지식공유자가 같은 과정으로 진행한 외부 멘토링에 대한 피드백입니다.

"싱글톤 패턴부터 어댑터 패턴까지 주로 사용하는, 실효성 있는 패턴들을 잘 배울 수 있었다. 각 패턴의 특징과 객체 간 협력관계를 이해함으로써 이후 학습할 스프링 프레임워크를 더 잘 이해하게 되었다."

이노베이션 아카데미 - 강*수

"스터디를 진행하기 전에는 책 설명을 보고 UML을 봐도 패턴을 이해하기 어려웠습니다. 스터디를 진행하면서 2~3주 차쯤에는, 디자인패턴이 결국 추상화와 인터페이스를 잘 사용하라는 방법론이 아닌가 하는 생각이 주를 이루었습니다. 하지만 스터디를 진행할수록 왜 이러한 패턴이 나올 수밖에 없었는지를 이해하면서 스터디를 진행하게 되었습니다. 스터디 이후에 각 패턴을 학습하는데 너무 잘 이해가 돼서 스스로 놀라웠습니다"

이노베이션 아카데미 - 이*

"자바를 처음으로 학습한 후에 스터디를 신청하였습니다. 스터디는 매주 브릿지 패턴, 팩토리 메서드 패턴, 옵저버 패턴 등 여러 가지 디자인 패턴들을 활용하여 코드를 리팩토링하며 과제를 해결하는 방식으로 진행되었습니다. 디자인 패턴을 혼자 공부하며 어려웠던 부분을 과제와 스터디를 하면서 재밌게 이해할 수 있었습니다."

이노베이션 아카데미 - 김*연

"이번 디자인패턴 스터디는 지난번 자바 스터디보다 더 재밌게 공부할 수 있었습니다! 특히 팩토리 패턴이나, 전략 패턴, 옵저버 패턴이 기억이 많이 남는 것 같습니다. 디자인패턴을 통한 유지보수 편의성의 막강한 힘을 조금이나마 체험할 수 있었던 것 같습니다. 현재 스프링을 활용한 프로젝트를 진행하고 있는데 이 스터디를 통해 배운 것들을 녹여서 조금이라도 더 좋은 코드를 작성할 수 있었으면 좋겠습니다."

이노베이션 아카데미 - 조*진


학습 내용 📚

1. 디자인 패턴이 무엇인가요? 리팩토링은?

2. 객체를 생성하는 패턴들

  • Factory Method - 팩토리를 활용한 객체 생성과 리팩토링
  • Abstract Factory - 팩토리를 선택하여 인스턴스의 세트를 만들자
  • Singleton - 단 하나의 인스턴스만을 생성하기

3. 알고리즘 뼈대나 기능과 구현을 분리하여 좀더 유연하게 만들기

  • Strategy - 정책이나 알고리즘을 분리하고 필요에 따라 추가 대체할 수 있도록 함
  • Bridge - 기능이 선언된 부분과 이에 대한 다양한 구현부를 분리하고 bridge를 통해 연결함
  • Template Method - 고정된 흐름은 Template으로 정의하고 그 내부에 다양하게 구현될 수 있는 메서드들은 서브클래스에서 구현

4. 동일시하기

  • Decorator - 다양한 기능들을 유연하게 추가하기 (Object와 Decorator를 동일시)
  • Composite - 단순 객체와 이를 포함하는 복합 객체를 동일시

5. 상태를 클래스로 표현하여 유연하게 만들기

  • State - 상태의 여러 값에 기반하여 클래스 전반의 기능들이 결정될 때
  • Observer - 하나의 객체(Subject)에 의존성을 가진 여러 객체(Observer)들에게 변화를 통지해야 할 때

6. 복잡한 것을 단순하게

  • Facade - 클라이언트가 사용하기 편하게 하나의 인터페이스를 제공하자
  • Mediator - 여러 객체가 서로 소통하지 않고 중앙의 하나의 객체와만 소통하게

7. 구조안을 돌아다니는 패턴들

  • Iterator - 객체를 순회하는 방법에 대한 동일한 인터페이스를 제공하자
  • Visitor - 객체를 방문하여 기능을 수행한다

8. 접근 제어하는 방법

  • Proxy - 실제 객체에 대한 대리자를 둔다

9. 호환

  • Adapter - 클라이언트가 원하는 인터페이스로 변경해주기

10. 명령을 객체로

  • Command - 다양하게 수행되어야 하는 일들을 일관된 인터페이스로 캡슐화하여 처리

11. 디자인 패턴과 함께하는 슬기로운 생활


예상 질문 Q&A 💬

Q. 자바를 몰라도 시작할 수 있나요? 아니면 입문자 정도는 되어야 하나요?

자바를 몰라도 다른 OOP 언어를 알면 수강할 수 있습니다. 하지만, 전혀 기초가 없는 경우에는 인프런에 자바 입문 무료 강의가 있습니다. 그 강의를 먼저 듣고 오심을 추천합니다.

Q. 다른 객체지향 언어(C++, C#)를 공부했습니다. 그래도 들을 수 있나요?

OOP 언어들은 대부분 비슷한 개념으로 설계되어 있습니다. 따라서 어떤 객체지향 언어를 이미 학습했다고 하면 이 강의를 수강하게 되면 자바도 배우고 객체지향 설계도 같이 학습할 수 있는 일석이조의 효과를 누릴 수 있습니다.

Q. 디자인 패턴을 배우면 뭐가 좋은가요?

디자인 패턴은 문법도 규칙도 아닙니다. 하지만 문제를 파악하고 그 문제에 해당하는 가장 좋은 설계 방법을 제시해줍니다. 이러한 과정을 코드와 함께 학습함으로써 어떤 새로운 프로그램을 설계할 때 다양한 응용과 확장을 구현할 수 있습니다. 이미 잘 만들어진 패턴을 학습함으로써 더 좋은 설계를 구현할 수 있는 것입니다.

Q. 실무에 적용할 수 있나요?

우리가 실무에서 사용하는 많은 프레임워크나 개발된 프로그램은 디자인 패턴이 이미 여러 부분에 적용되어 있습니다. 따라서 기존의 코드를 이해하는데 디자인 패턴의 학습은 아주 많은 도움이 될 것입니다. 또한 앞으로 수강생분이 더 효율적인 코드를 작성하는데도 여러모로 도움이 될 것입니다.


지식공유자 소개 ✒️

동국대학교에서 컴퓨터 공학을 전공하고 서울대학교 대학원에서 컴퓨터 공학 석사 학위를 받았습니다. 회사를 다닐 때는 자바, C, C++ 등 언어로 다수의 개발 프로젝트를 진행하였고, 비트 컴퓨터, T 아카데미에서 자바, 웹, 자료구조와 알고리즘, 모바일, 디자인 패턴 분야 등의 강의를 진행하였습니다.

국민대와 경희대에서 비전공자를 대상으로 하는 프로그래밍 강의를 하였으며, NHN NEXT에서 겸직 교수로 자바 프로그래밍과 프로그래밍 연습 강의를 진행했습니다. 10년은 개발자로 일했기에 실무에서 필요한 내용을 잘 알고, 또 다른 10년은 강의를 하며 초보자의 마음까지 잘 알게 되었습니다.

요즘 최대 관심사는 초등학생부터 어른까지 각계각층의 사람들이 멋진 프로그래밍 세계에 관심을 가지고 공부할 수 있도록 도와주는 것입니다. 현재는 이노베이션 아카데미(42서울)의 멘토로 있답니다.

이력 사항

  • 이노베이션 아카데미(42 SEOUL) 멘토
  • 'Do It 자바 프로그래밍 입문' 저자(이지스퍼블리싱)
  • 패스트캠퍼스, 인프런의 인기 자바 프로그래밍 강의 제작자
  • NHN NEXT 겸직교수, 비트교육센터, TAcademy 강사
  • 스펙트라 개발 팀장
  • 현대정보기술
  • 서울대학교 컴퓨터공학부 석사
  • 동국대학교 컴퓨터공학과 학사

포트폴리오/개인 영상


이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 자바를 입문한 사람

  • 다른 언어로 객체지향 프로그래밍을 익히고 자바 언어도 배우고 싶은 사람

  • 자바언어로 프로젝트를 해 본 경험이 있는 분

  • 디자인 패턴으로 객체지향 프로그래밍을 학습하고자 하는 분

선수 지식,
필요할까요?

  • 자바

  • 객체지향 프로그래밍 언어

안녕하세요
박은종입니다.

지식공유자 소개 ✒️

동국대학교에서 컴퓨터 공학을 전공하고 서울대학교 대학원에서 컴퓨터 공학 석사 학위를 받았습니다. 회사를 다닐 때는 자바, C, C++ 등 언어로 다수의 개발 프로젝트를 진행하였고, 비트 컴퓨터, T 아카데미에서 자바, 웹, 자료구조와 알고리즘, 모바일, 디자인 패턴 분야 등의 강의를 진행하였습니다.

국민대와 경희대에서 비전공자를 대상으로 하는 프로그래밍 강의를 하였으며,  NHN NEXT에서 겸직 교수로 자바 프로그래밍과 프로그래밍 연습 강의를 진행했습니다. 10년은 개발자로 일했기에 실무에서 필요한 내용을 잘 알고, 또 다른 10년은 강의를 하며 초보자의 마음까지 잘 알게 되었습니다.

요즘 최대 관심사는 초등학생부터 어른까지 각계각층의 사람들이 멋진 프로그래밍 세계에 관심을 가지고 공부할 수 있도록 도와주는 것입니다. 현재는 이노베이션 아카데미(42서울)의 멘토로 있답니다.

이력 사항

이노베이션 아카데미(42 SEOUL) 멘토

'Do It 자바 프로그래밍 입문' 저자(이지스퍼블리싱)

패스트캠퍼스, 인프런의 인기 자바 프로그래밍 강의 제작자

NHN NEXT 겸직교수, 비트교육센터, TAcademy 강사

스펙트라 개발 팀장

현대정보기술

서울대학교 컴퓨터공학부 석사

동국대학교 컴퓨터공학과 학사

포트폴리오/개인 영상

Do it 자바프로그래밍 입문 저자

http://www.yes24.com/Product/Goods/62281686

Do it 자바 프로그래밍 입문 강의 (인프런)

자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)

은종쌤과 자바로 디자인 패턴 쉽게 시작하기

은종쌤의 프로그래밍 강의 (유튜브)

https://www.youtube.com/channel/UCTBVYQc1ZVDbAZcm1J_pniA

 

 

커리큘럼

전체

20개 ∙ (6시간 34분)

  • 디자인 패턴은 무엇인가요?

    22:29

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!