Skip to content
Home » 디자인 패턴 정리 | Design Pattern, Factory Pattern, 디자인패턴, 팩토리 패턴 17702 명이 이 답변을 좋아했습니다

디자인 패턴 정리 | Design Pattern, Factory Pattern, 디자인패턴, 팩토리 패턴 17702 명이 이 답변을 좋아했습니다

당신은 주제를 찾고 있습니까 “디자인 패턴 정리 – Design pattern, Factory Pattern, 디자인패턴, 팩토리 패턴“? 다음 카테고리의 웹사이트 kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: kk.taphoamini.com/wiki. 바로 아래에서 답을 찾을 수 있습니다. 작성자 코드없는 프로그래밍 이(가) 작성한 기사에는 조회수 6,630회 및 좋아요 110개 개의 좋아요가 있습니다.

Table of Contents

디자인 패턴 정리 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 Design pattern, Factory Pattern, 디자인패턴, 팩토리 패턴 – 디자인 패턴 정리 주제에 대한 세부정보를 참조하세요

유료강의: https://www.youtube.com/channel/UCHcG02L6TSS-StkSbqVy6Fg/join
챕터List : https://www.youtube.com/playlist?list=PLDV-cCQnUlIYcAmW4j27i8aYPbja9HePm
Code: https://colab.research.google.com/github/NoCodeProgram/DesignPatterns/blob/main/Creational/FactoryP.ipynb

디자인 패턴 정리 주제에 대한 자세한 내용은 여기를 참조하세요.

[Design pattern] 많이 쓰는 14가지 핵심 GoF 디자인 패턴의 종류

디자인 패턴은 프로그램을 개발하는 과정에서 빈번하게 발생하는 디자인 문제를 정리해서 상황에 따라 간편하게 적용할 수 있게 정리한 것입니다.

+ 여기에 표시

Source: m.hanbit.co.kr

Date Published: 9/20/2022

View: 1244

[디자인 패턴] 총 정리 (2) – 디자인 패턴이란? + 디자인 패턴 종류

일반적으로 우리가 말하는 디자인 패턴은 GOF(Gang Of Four)라는 괴물들이 집필한 Design Patterns에 나오는 23개의 패턴을 말합니다.

+ 여기에 보기

Source: effortguy.tistory.com

Date Published: 3/23/2022

View: 2505

[디자인 패턴 17편] 디자인 패턴 총 정리. 생성편

지금까지 공부하며 정리한 GoF 디자인 패턴을 총 정리해보려고 한다. 최대한 간결하고 필요한 것만 남겨본다. 여기서는 구체적인 구현 코드는 적지 …

+ 여기에 자세히 보기

Source: dailyheumsi.tistory.com

Date Published: 6/20/2022

View: 7228

디자인 패턴 정리 – GOF(Gang of Four) 디자인 패턴들 – Jay’s Blog

주요 디자인 패턴만 정리했습니다. 1. 어댑터 패턴(Adapter Pattern). 용도. 어떤 클래스를 우리가 바로 사용할 수 없을 때가 있다. 다른 곳에서 …

+ 여기에 표시

Source: realzero0.github.io

Date Published: 6/3/2022

View: 6166

[디자인 패턴] GoF의 디자인패턴 간단 정리. – Gone – 티스토리

디자인 패턴(Design Pattern) 이란. 디자인 패턴이란 프로그래밍 할때에 문제를 해결하고자 코드의 구조들을 일정한 형태로 만들어. 재이용하기 편리하게 …

+ 여기에 자세히 보기

Source: gone-sw.tistory.com

Date Published: 9/16/2022

View: 9089

웹 백엔드 관점으로 본 디자인 패턴 정리(1) – Easy Understanding

웹 백엔드 관점으로 본 디자인 패턴 정리(1) – 디자인 패턴의 분류와 문법 · 1. 전략 패턴 · 2. 옵저버 패턴 · 3. 데코레이터 패턴 · 4. 팩토리 패턴(팩토리 …

+ 자세한 내용은 여기를 클릭하십시오

Source: appleg1226.tistory.com

Date Published: 12/16/2022

View: 1099

[디자인 패턴] 디자인 패턴 정리 – 이멀젼씨

목적 좀 더 나은 코드를 위해 어떤 패턴을 써야 유용할 지 한눈에 보고 판단하기 위함 목차 디자인 패턴이란? 생성패턴 구조패턴 행위패턴 디자인 …

+ 여기에 보기

Source: emgc.tistory.com

Date Published: 4/14/2022

View: 8303

주제와 관련된 이미지 디자인 패턴 정리

주제와 관련된 더 많은 사진을 참조하십시오 Design pattern, Factory Pattern, 디자인패턴, 팩토리 패턴. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

Design pattern, Factory Pattern, 디자인패턴, 팩토리 패턴
Design pattern, Factory Pattern, 디자인패턴, 팩토리 패턴

주제에 대한 기사 평가 디자인 패턴 정리

  • Author: 코드없는 프로그래밍
  • Views: 조회수 6,630회
  • Likes: 좋아요 110개
  • Date Published: 2021. 9. 19.
  • Video Url link: https://www.youtube.com/watch?v=AmwEIt0vhxA

[Design pattern] 많이 쓰는 14가지 핵심 GoF 디자인 패턴의 종류

디자인 패턴을 활용하면 단지 코드만 ‘재사용’하는 것이 아니라, 더 큰 그림을 그리기 위한 디자인도 재사용할 수 있습니다. 우리가 일상적으로 접하는 문제 중 상당수는 다른 많은 이들이 접했던 문제입니다.

디자인 패턴은 프로그램을 개발하는 과정에서 빈번하게 발생하는 디자인 문제를 정리해서 상황에 따라 간편하게 적용할 수 있게 정리한 것입니다. 잘 활용할 수만 있다면 적지 않은 시간과 노력, 시행착오를 줄일 수 있습니다.

우리 앞에 놓여진 것과 비슷한 문제를 해결하려고 선배들이 시간과 노력을 투자해서 이것저것 시도해 보고, 그중에서 가장 효과적이라고 알려진 방법이 ‘패턴’이라는 이름으로 자리를 잡았기 때문입니다.

패턴의 용도에 따라 분류하고 그에 따른 패턴의 종류에 대해 간단히 알아보겠습니다.

디자인 패턴 용도에 따라 나누기

대부분의 카탈로그에서는 몇 가지 범주에 맞춰서 디자인 패턴을 분류하고 있습니다. 그중 제일 유명한 분류 방법은 맨 처음 출간되었던 패턴 카탈로그에서 제시한 생성, 행동, 구조라는 3가지 범주로 용도에 따라 나누기입니다.

패턴을 범주 별로 나누면 외우는데 도움이 될까?

점점 더 많은 디자인 패턴이 발견됨에 따라 디자인 패턴을 찾거나 같은 그룹에 속하는 패턴 끼리 비교하기 좋게, 종류에 따라 분류할 필요성이 생겼습니다. 그래서 패턴을 비교하는데 도움이 되는 것은 확실합니다.

대부분의 카탈로그에서는 몇 가지 범주에 맞춰서 디자인 패턴을 분류하고 있습니다. 그중 제 일 유명한 분류 방법은 맨 처음 출간되었던 패턴 카탈로그에서 제시한 생성, 행동, 구조라는 3가지 범주로 용도에 따라 나누기입니다.

그렇지만 패턴 분류보다 중요한 것은 패턴을 제대로 이해하고, 여러 패턴 사이의 관계를 확실히 파악하는 일입니다.

생성 패턴(Creational Pattern)

객체 인스턴스를 생성하는 패턴으로, 클라이언트와 그 클라이언트가 생성해야 하는 객체 인스턴스 사이의 연결을 끊어 주는 패턴입니다.

싱글턴 패턴(Singleton Pattern)

특정 클래스에 객체 인스턴스가 하나만 만들어지도록 해주는 패턴입니다. 싱글턴 패턴을 사용하면 전역 변수를 사용할 때와 마찬가지로 객체 인스턴스를 어디서든지 액세스 할 수 있게 만들 수 있습니다. 클래스 인스턴스를 하나만 만들고 그 인스턴스로의 전역 접근을 제공합니다.

추상 팩토리 패턴(Abstract Factory Pattern)

구상 클래스에 의존하지 않고도 서로 연관되거나 의존적인 객체로 이루어진 제품군을 생산하는 인터페이스를 제공합니다. 구상 클래스는 서브 클래스에서 만듭니다.

팩토리 메소드 패턴(Factory method pattern)

객체를 생성할 때 필요한 인터페이스를 만듭니다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정합니다. 팩토리 메소드 패턴을 사용하면 클래스 인스턴스 만드는 일을 서브클래스에게 맡기게 됩니다.

행동 패턴(Behavioral Pattern)

클래스와 객체들이 상호작용하는 방법과 역할을 분담하는 방법을 다루는 패턴입니다.

템플릿 메소드 패턴(Template Method Pattern)

알고리즘의 골격을 정의합니다. 템플릿 메소드를 사용하면 알고리즘 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도 있습니다.

싱글턴 패턴(Singleton Pattern)

특정 클래스에 객체 인스턴스가 하나만 만들어지도록 해주는 패턴입니다. 싱글턴 패턴을 사용하면 전역 변수를 사용할 때와 마찬가지로 객체 인스턴스를 어디서든지 액세스 할 수 있게 만들 수 있습니다. 클래스 인스턴스를 하나만 만들고 그 인스턴스로의 전역 접근을 제공합니다.

상태 패턴(State Pattern)

상태 패턴을 사용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있습니다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있습니다. 반복자 패턴(iterator pattern) 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공합니다. 전략 패턴(Strategy Pattern) 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해 줍니다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있습니다.

옵저버 패턴(observer pattern) 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다. 구조 패턴(Structural Pattern) 클래스와 객체를 더 큰 구조로 만들 수 있게 구상을 사용하는 패턴입니다.

데코레이터 패턴(Decorator Pattern) 데코레이터 패턴으로 객체에 추가 요소를 동적으로 더할 수 있습니다. 데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있습니다. 프록시 패턴(Proxy Pattern) 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)을 제공합니다.

컴포지트 패턴(Composite Pattern) 컴포지트 패턴으로 객체를 트리구조로 구성해서 부분-전체 계층구조를 구현합니다. 컴포지트 패턴을 사용하면 클라이언트에서 개별 객체와 복합 객체를 똑같은 방법으로 다룰 수 있습니다. 어댑터 패턴(Adapter pattern) 특정 틀래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와줍니다. 퍼사드 패턴(facade pattern) 서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어줍니다. 또한 고수준 인터페이스도 정의하므로 서브시스템을 더 편리하게 사용할 수 있습니다. 지금까지 범주에 따른 디자인 패턴의 종류에 대해 간단히 알아보았습니다.

디자인 패턴이 만병통치약은 아닙니다. 모든 도구는 용도에 맞게, 적절하게 쓰일 때 그 위력을 발휘합니다. 파리를 잡을 때 파리채를 쓰는 게 기관총과 수류탄을 쓰는 것보다 더 나은 것처럼, 디자인 패턴도 어울리지 않는 상황에서 남용하면 역효과가 발생합니다. 처음 배우는 단계에서는 어느 정도 남용도 하고, 돼지 목에 진주 목걸이를 걸어 놓는 일도 종종 하겠지만, 경험과 지식이 점점 쌓이면 디자인 패턴을 현명하게 활용하는 방법을 깨달을 수 있게 됩니다. 위 내용은 『헤드 퍼스트 디자인 패턴』(개정판)의 내용을 재구성하여 제작되었습니다. 원스톱으로 배우는 14가지 GoF 핵심 디자인 패턴과 9가지 객체지향 디자인 원칙! 『헤드 퍼스트 디자인 패턴』은 현장에서 자주 사용되는 옵저버, 어댑터, MVC 패턴 등 14가지 GoF 객체지향 패턴을 중점으로 패턴의 정의, 사용 시기, 사용처, 사용 이유, 즉시 디자인에 적용하는 방법을 알려드립니다. 이와 더불어 객체지향 프로그래밍에 광범위하게 적용할 수 있는 OCP, 할리우드 원칙 등 9가지 객체지향 디자인 원칙과 패턴으로 생각하는 방법도 담았습니다. 14가지 GoF 필살 패턴!

유지 관리가 편리한 객체지향 소프트웨어를 만드는 법

[디자인 패턴] 총 정리 (2) – 디자인 패턴이란? + 디자인 패턴 종류

반응형

이번 포스팅에선 디자인 패턴이 무엇인지 왜 배워야 하는지를 설명하고 디자인 패턴 종류를 알아보겠습니다.

디자인 패턴이란?

일반적으로 우리가 말하는 디자인 패턴은 GOF(Gang Of Four)라는 괴물들이 집필한 Design Patterns에 나오는 23개의 패턴을 말합니다.

개발을 구조적으로 우아하게 설계하려고 노력하다보니 반복되는 패턴들이 발견됐는데 그걸 바로 디자인 패턴이라고 합니다.

(괴물들이 집필한 이 책의 번역본이 있습니다. 근데 보기가 너무 어렵… ㅠㅠ)

디자인 패턴을 왜 배우라고 하나?

1. 일단 제일 큰 이유는 개발자들과 소통이 잘 되기 위함입니다.

예를 들어 코드리뷰를 할 때

디자인 패턴 모르는 개발자

“나는 1, 2, 3, 4 실행 순서 중 3번만 a, b, c 상태 별로 다르기 때문에 1, 2, (3), 4 순서는 부모 메소드에 냅두고 3번만 상속이나 구현으로 풀었으면 좋겠어요.” (나 : ? 왜 저렇게 어렵게 말하지?)

디자인 패턴 아는 개발자

“이 부분 템플릿 메소드 패턴으로 하는 게 어떨까요?”

별 거 아닌 거 같아도 커뮤니케이션이 짧아지고 명확해지니 아주 좋은 소통을 할 수 있습니다.

2. 더 우아하고 더 빠른 개발을 할 수 있다.

이미 많은 고민들을 통해 나와있는 패턴들을 어느정도 숙지하고 있다면 개발하는데 많은 도움이 됩니다.

23개의 패턴이 항상 쓰이는 건 아니고 유용하지 않을 수도 있습니다. 하지만 패턴에서 보이는 고민들을 숙지하고 있으면 복잡하고 중복이 많은 코드를 짜지 않는 방향으로 개발할 가능성이 커집니다. 코드 보는 관점이 조금씩 바뀌니깐요.

디자인 패턴 종류

생성 패턴 (5개) + 구조 패턴 (7개) + 행동패턴 (11)개로 이루어져 있습니다.

23개를 어떻게 기억하지?라고 생각이 들 수도 있지만 패턴 이름에 뜻이 다 명확하게 보이기 때문에 걱정없습니다.

아래 표를 보시면 일이나 책에서 가끔 봤던 단어들이 보일 겁니다. 그게 바로 이겁니다.

생성 패턴 (5개) 구조 패턴 (7개) 행동 패턴 (11개) 싱글톤 (Singleton) 어댑터 (Adapter) 책임 연쇄 (Chain-of-Responsibility) 팩토리 메소드 (Factory Method) 브릿지 (Bridge) 커맨드 (Command) 추상 팩토리 (Abstract Factory) 컴포짓 (Composite) 인터프리터 (Interpreter) 빌더 (Builder) 데코레이터 (Decorator) 이터레이터 (Iterator) 프로토타입 (Prototype) 퍼사드 (Facade) 중재자 (Mediator) 플라이웨이트 (Flyweight) 메멘토 (Memento) 프록시 (Proxy) 옵저버 (Observer) 상태 (State) 전략 (Strategy) 템플릿 메소드 (Template Method) 비지터 (Visitor)

패턴이 23개나 되어서 배우는데 고민이 된다면 하루에 1개씩이라도 익히면 됩니다.

다음 포스팅부터 1개씩 알아보겠습니다. 생성 패턴부터 행동 패턴까지 쭉쭉 포스팅하겠습니다~

반응형

[디자인 패턴 17편] 디자인 패턴 총 정리. 생성편

지금까지 공부하며 정리한 GoF 디자인 패턴을 총 정리해보려고 한다.

최대한 간결하고 필요한 것만 남겨본다.

여기서는 구체적인 구현 코드는 적지않고, 이미 패턴이 구현된 객체들을 사용하는 코드만 적겠다.

사용자 코드만 봐도 어떻게 작동하는지 알 수 있을거라 생각한다.

(또 이렇게 사용자 코드만 봐도 이해가 가도록 구현해놓는 코드가 좋은 코드, 패턴이라고 생각한다.)

구현 코드는 대충 참고만할 수 있게, 클래스 다이어그램만 남겨둔다.

먼저 객체의 생성에 대해 다루는 생성편이다.

싱글톤 (Signleton)

코드 내 어디서든, 오직 하나의 인스턴스만 사용할 수 있도록 객체를 생성하는 방법이다.

즉 객체는 여러 번 생성되지 않고, 최초 하나의(Single) 인스턴스만 생성하고, 이후에는 이 인스턴스를 참조하게 된다.

전역적으로 하나의 인스턴스만 사용, 참조해야하는 경우에 사용한다.

사용 예시

# 보통, 싱글톤 객체의 .get_instance() 로 인스턴스를 받아온다. singleton_1 = Singleton.get_instance() singleton_2 = Singleton.get_instance() # 이렇게 받아온 두 인스턴스는 동일한 인스턴스다. singleton_1 == singleton_2 # True

구현 구조

출처: https://commons.wikimedia.org/wiki/File:Singleton_pattern_uml.png

구체적인 동작은 [디자인 패턴 2편] 생성 패턴, 싱글톤(Singleton) 참고.

활용 예시

DB 커넥션과 Pool 을 담당하는 인스턴스

시스템 전역의 로깅을 담당하는 로거

프로토타입 (Prototype)

기존의 인스턴스를 그대로 복제(clone) 하여 새로운 객체를 생성하는 방법이다.

즉, 하나의 인스턴스를 사용하는 싱글톤과는 반대되는 개념이다.

사용 예시

# 보통, 프로토타입 객체의 .clone() 으로 인스턴스를 복사한다. original = Prototype() prototype = original.clone() # 이렇게 받아온 두 인스턴스는 동일한 객체는 아니지만, 내부 데이터는 같다. original == prototype # False original.data == prototype.data # True

구현 구조

출처 : https://www.baeldung.com/wp-content/uploads/2019/10/Prototype-Pattern.png

활용 예시

DB 로부터 얻어온 데이터 인스턴스를 동일하게 하나 더 만들어야 하는 경우 DB 에 연결하는 것 보다 이렇게 코드로 처리 하는게 일반적으로 cost 가 더 저렴하다.

인스턴스 복사가 자주 필요한 어디든..?

팩토리 (Factory)

인스턴스를 만들어내는 공장(Factory) 를 통해 객체를 생성하는 방법이다.

즉, 인스턴스를 직접 생성해내지 않고, 공장에서 제공하는 메쏘드를 통해 생성해낸다.

사용자는 객체를 생성하고 싶을 때, 공장에서 제공하는 메쏘드만 알고있으면 된다.

그 외 구체적으로 인스턴스가 어떻게 생성되는지 몰라도 된다.

한 집합 내에 있는 클래스들의 생성을 한 곳에서 처리하고 싶을 때 사용한다.

사용 예시

# 보통, Factory 객체의 `get` 메쏘드의 파라미터로 생성할 객체의 타입을 넘겨준다. samsung_keyboard = KeyboardFactory.get_keyboard(“samsung”) lg_keyboard = KeyboardFactory.get_keyboard(“lg”) # 생성된 객체는 다음과 같이 구체적인 클래스 인스턴스다. samsung_keyboard # SamsungKeyboard lg_keyboard # LgKeyboard

구현 구조

출처 : http://fuzzduck.com/Design-Patterns/Factory-Pattern.php

구체적인 동작은 [디자인 패턴 3편] 생성 패턴, 팩토리 메쏘드 (Factory) 참고.

활용 예시

삼성, LG 키보드를 만드는 키보드 팩토리

개념 상 같은 분류의 클래스들의 생성을 모아서 처리하는게 편할 때

추상 팩토리 (Abstract Factory)

공장을 만들어내는 상위 공장을 먼저 정의하고, 여기서 구체적인 공장을 만든 후, 이 공장에서 객체를 생성하는 방법이다.

즉, 팩토리의 위에 이 팩토리를 만드는 팩토리가 있다고 생각하면 된다.

그 외 특징은 팩토리 패턴과 같다.

사용 예시

# 키보드 팩토리의 팩토리(추상 팩토리)를 통해 키보드 팩토리를 얻는다. CommonKeyboardFactory = AbstarctKeyboardFactory.get_keyboard_factory(“common”) # 이후는 팩토리 패턴과 동일하다. samsung_common_keyboard = CommonKeyboardFactory.get_keyboard(“samsung”) lg_common_keyboard = CommonKeyboardFactory.get_keyboard(“lg”) samsung_keyboard # SamsungCommonKeyboard lg_keyboard # LgCommonKeyboard

구현 구조

출처 : https://commons.wikimedia.org/wiki/File:Abstract_Factory_UML_class_diagram.svg

구체적인 동작은 [디자인 패턴 5편] 생성 패턴, 추상 팩토리 메쏘드 (Abstract Factory) 참고.

활용 예시

기계식 키보드 공장와 일반 키보드공장을 만드는 키보드 추상 팩토리

팩토리보다 조금 더 복잡한, 혹은 구조적인 계층을 갖는 클래스들의 생성을 처리해야 할 때.

빌더 (Builder)

객체를 생성할 때 필요한 파라미터가 많은 경우, 각 파라미터가 무엇을 의미하는지 알기 힘들 수 있다.

이럴 때, 빌더라는 형태를 통해 파라미터 의미를 명확히하여 생성할 수 있다.

이건 아래의 구체적인 사용 예를 보면 된다.

사용 예시

# 빌더 패턴 사용 전 (경우 1) WebBrowser browser = WebBrowser(True, FlashPlugin(), True, 10); # 빌더 패턴을 사용하면 이렇습니다. WebBrowser browser = BrowserBuilder(). with_ssl(True). with_flash_plugin(). with_cookie_support(). set_timeout(10). build()

근데 생각해보니 파이썬에서는 keyword 파라미터를 지원하기 때문에, 굳이 필요 없는 듯 하다.

위 같이 안하고 그냥 다음과 같이 하면 된다.

# 파이썬의 키워드 파라미터 사용 WebBrowser browser = WebBrowser(ssl=True, flash_plugin=FlashPlugin(), cookie_support=True, timeout=10)

여러분 파이썬 쓰세요 ~!

구현 구조

출처 : https://ko.m.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC:Builder_UML_class_diagram.svg

구체적인 동작은 [디자인 패턴 4편] 생성 패턴, 빌더 (Builder) 참고.

활용 예시

파라미터가 너무 많아서 의미를 파악하기 힘들 때

정리

싱글톤, 프로토타입은 완전히 반대의 개념은 아니지만, 비슷한 집합으로 묶을 수 있지 않을 까싶다.

추상 팩토리는 팩토리를 한번 더 요소화 한 것이다.

빌더는 파이썬에서 안써도 될듯 하다.

틀린게 있다면 댓글로 알려주세요 🙂

반응형

디자인 패턴 정리

GoF(Gang of Four)에서는 23가지 디자인 패턴을 3가지 유형으로 분류합니다.

A. Creational Pattern

객체를 생성하는데 관련된 패턴들

객체가 생성되는 과정의 유연성을 높이고 코드의 유지를 쉽게 함

B. Structural Pattern

프로그램 구조에 관련된 패턴들

프로그램 내의 자료구조나 인터페이스 구조 등 프로그램의 구조를 설계하는데 활용할 수 있는 패턴들

C. Behavioral Pattern

반복적으로 사용되는 객체들의 상호작용을 패턴화 해놓은 것들

주요 디자인 패턴만 정리했습니다.

1. 어댑터 패턴(Adapter Pattern)

용도 어떤 클래스를 우리가 바로 사용할 수 없을 때가 있다. 다른 곳에서 개발한 클래스고, 우리가 그것을 수정할 수 없을 때, 우리에게 맞게 중간에 변환할 역할을 해줄 수 있는 클래스가 필요한데, 그것이 바로 어댑터이다.

사용 방법 상속 위임: 어떤 메소드의 실제 처리를 다른 인스턴스의 메소드에게 맡기는 방법

Class Diagram

2. 프로토 타입 패턴(Prototype Pattern)

용도 미리 만들어진 객체를 복사해서 객체를 생성하는 방식 객체를 많이 만들어야 할 경우, 객체 생성에 드는 코딩 분량을 현저히 줄일 수 있다 클래스로부터 객체를 생성하기 어려운 경우(그래픽 에디터에서 사용자의 마우스 클릭으로 생성되는 객체들)

사용 방법 모형(Prototype) 인스턴스를 등록해 놓고, 등록된 인스턴스를 복사(clone())해서 인스턴스를 생성함

Class Diagram

3. 싱글톤 패턴(Singleton Pattern)

용도 시스템 내부에 1개의 인스턴스만 생성하고 싶은 경우 컴퓨터 자체를 표현한 클래스 현재 시스템 설정을 표현한 클래스

사용 방법 생성자를 private으로 선언하고, 해당하는 생성자를 클래스 내부에서만 호출함

Class Diagram

4. 컴포지트 패턴(Composite Pattern)

용도 틀과 내용물을 같은 것으로 취급하고 싶을 때(디렉토리 내부에는 디렉토리와 파일이 있지만, 둘 모두 디렉토리 내부에 있는 Element로 표현하고 싶을 때)

사용 방법 Composite클래스가 Component를 포함하도록 함

Class Diagram // Composite이 Component를 포함하고 있음

5. 데코레이터 패턴(Decorator Pattern)

용도 데코레이팅한 결과물을 다시 내용물로 보고 그것을 다시 데코레이팅하기 위함(지속적으로 장식을 추가할 때, 문자열 주위에 여러 유형의 border 장식을 추가할 때)

사용 방법 Border 클래스가 다시 Display를 포함함(컴포지트랑 비슷)

Class Diagram // Decorator가 Component를 포함하고 있음

6. 퍼사드 패턴(Facade Pattern)

용도 대규모 프로그램에는 서로 관련있는 클래스들이 많음 -> 복잡하게 얽혀있는 클래스들을 정리해서 높은 레벨의 인터페이스(API)를 제공(간단하게 접근가능) 여러 클래스들을 직접 제어하지 않고 ‘창구(facade)’에 요구함 결과적으로 구현시에 간단한 인터페이스를 사용할 수 있게

사용 방법 여러 클래스들의 기능들을 묶은 Facade 클래스를 만들고 Facade 클래스에 접근함

Class Diagram

7. 프록시 패턴(Proxy Pattern)

용도 Proxy는 대리인이라는 의미, 시간이 많이 걸리는 작업을 할 때 사용함 시간이 많이 걸리는 작업을 할 때, 대리인이 할 수 있는 일은 대리인이 하고 할 수 없는 일(Heavy job)은 본래의 클래스에게 넘겨줌 시스템 초기화는 필요하지 않은 기능까지 초기화하려고 하면 많은 시간이 필요한데, 그 기능을 Proxy에 위임함 프린트 프로그램에서 실제 프린터를 실행하는 과정에 시간이 오래 걸리기 때문에 그 과정에 있는 일들을 Proxy에 위임함

사용 방법 Proxy클래스에 우선 일을 위임하고, 그 뒤에 RealSubject가 해야할 일은 넘겨주는 방법으로 사용

Class Diagram

8. 옵저버 패턴(Observer Pattern)

용도 관찰 대상의 상태가 변화했을 때 관찰자에게 통지하는 패턴 상태 변화에 따른 처리를 기술할 때 효과적으로 활용(MVC패턴에서 Model과 View의 분리 등)

사용 방법 Observer 클래스에 상태 변화를 알려주고, Observer는 다시 그 변화에 맞는 결과를 나타냄

Class Diagram

구현 및 Code

Observer Class

public interface Observer { public abstract void update(NumberGenerator generator); }

NumberGenerator

import java.util.Vector; import java.util.Iterator; public abstract class NumberGenerator { private Vector observers = new Vector(); // Observer들을 보관 public void addObserver(Observer observer) { // Observer를 추가 observers.add(observer); } public void deleteObserver(Observer observer) { // Observer를 삭제 observers.remove(observer); } public void notifyObservers() { // Observer에 통지 Iterator it = observers.iterator(); while (it.hasNext()) { Observer o = (Observer) it.next(); o.update(this); } } public abstract int getNumber(); // 수를 취득한다. public abstract void execute(); // 수를 생성한다. }

RandomNumberGenerator

import java.util.Random; public class RandomNumberGenerator extends NumberGenerator { private Random random = new Random(); // 난수발생기 private int number; // 현재의 수 public int getNumber() { // 수를 취득한다. return number; } public void execute() { for (int i = 0; i < 20; i++) { number = random.nextInt(50); notifyObservers(); } } } DigitObserver public class DigitObserver implements Observer { public void update(NumberGenerator generator) { System.out.println("DigitObserver:" + generator.getNumber()); try { Thread.sleep(100); } catch (InterruptedException e) { } } } GraphObserver public class GraphObserver implements Observer { public void update(NumberGenerator generator) { System.out.print("GraphObserver:"); int count = generator.getNumber(); for (int i = 0; i < count; i++) { System.out.print("*"); } System.out.println(""); try { Thread.sleep(100); } catch (InterruptedException e) { } } } Main public class Main { public static void main(String[] args) { NumberGenerator generator = new RandomNumberGenerator(); Observer observer1 = new DigitObserver(); Observer observer2 = new GraphObserver(); generator.addObserver(observer1); generator.addObserver(observer2); generator.execute(); } } 9. 커맨드 패턴(Proxy Pattern) 용도 실행하고 싶은 메소드의 History 관리(우리가 Ctrl + z를 눌러서 실행취소를 한다고 할 때, History를 저장할 수 있어야 가능함) 매크로 명령을 정의하고자 할 때 동일한 명령을 반복해서 실행할 때 사용 방법 명령어를 객체에 캡슐화해 저장함(주로 스택으로 저장) Class Diagram 10. 책임 연쇄 패턴(Chain of Responsibility Pattern) 용도 어떤 요구가 발생했을 때, 그 요구를 처리할 Object를 바로 결정할 수 없을 때, 다수의 Object를 Chain으로 연결해 차례로 방문하면서 목적에 맞는 Object를 결정함(내가 못하면 남한테 전가시킴) 요구하는 측과 처리하는 측의 연결을 약화시킴(Coupling을 낮추는 역할을 함) 사용 방법 Handler객체가 문제를 해결했는지 확인하면서 계속해서 가능한 객체를 연결해 줌 Class Diagram 11. 중재자 패턴(Mediator Pattern) 용도 모든 행동을 수행하기 전에 ‘중재자 객체’의 결정이 있어야 하고, 중재자 객체로 프로그램이 수행됨 각 객체들은 중재자만 알게됨 사용 방법 각 객체와 중재자를 연결함 Class Diagram 12. 방문자 패턴(Visitor Pattern) 용도 데이터와 메소드를 구분하기 위함 많은 데이터에 여러 가지 유형의 처리를 수행할 경우 활용 사용 방법 데이터 구조 내부를 traversal하는 ‘visitor’ 클래스로 그 클래스에게 데이터의 처리를 맡김, 새로운 처리를 추가할 때는 새로운 visitor를 생성함 Class Diagram 13. 팩토리 메소드 패턴(Factory Method Pattern)

[디자인 패턴] GoF의 디자인패턴 간단 정리.

디자인 패턴(Design Pattern) 이란

디자인 패턴이란 프로그래밍 할때에 문제를 해결하고자 코드의 구조들을 일정한 형태로 만들어

재이용하기 편리하게 만든 일정한 패턴이라고 생각하시면 됩니다. 설명이 좀 어렵나요? 위키백과에는 다음과 같이 정의하고있습니다.

말하자면 구조적인 문제를 해결하는 방식을 이름을 붙여서 재이용하기 좋은 형태로 정리해둔 것이죠.

오늘 알아볼 GoF의 디자인 패턴은 위에도 있다시피 네명의 컴퓨터과학 연구자들이 소개한 대표적인 디자인패턴 방식입니다.

물론 아 대충 이런것이구나 는 이해가 금방될지라도 실제로 프로그래밍에 사용하려면 어려운점이 많아짐으로 우선 대략적으로 설명을 해두고 나중에 하나씩 따로 포스팅하도록 하겠습니다.

디자인패턴을 사용할 때의 장 , 단점 장점 – 개발자 간의 원활한 의사소통 – 소프트웨어 구조 파악 용이 – 재사용을 통한 개발 시간 단축 – 설계 변경 요청에 대한 유연한 대처

단점 – 객체지향 설계 / 구현 위주로 사용된다 . – 초기 투자 비용 부담 .

디자인패턴의 종류

1. 생성패턴

– Abstract Factory ( 추상 팩토리 ) – 동일한 주제의 다른 팩토리를 묶어 준다. – Builder – 생성(construction)과 표기(representation)를 분리해 복잡한 객체를 생성한다 – Factory Method -생성할 객체의 클래스를 국한하지 않고 객체를 생성한다. – Prototype ( 원형 ) – 기존 객체를 복제함으로써 객체를 생성한다. – Singleton ( 단일체 )

– 한 클래스에 한 객체만 존재하도록 제한한다.

2. 구조패턴

– Adapter ( 적응자 ) – 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록, 타 클래스의 인터페이스를 기존 인터페이스에 덧씌운다. – Bridge ( 가교 ) – 추상화와 구현을 분리해 둘을 각각 따로 발전시킬 수 있다. – Composite ( 복합체 ) – 0개, 1개 혹은 그 이상의 객체를 묶어 하나의 객체로 이용할 수 있다. – Decorator ( 장식자 ) – 기존 객체의 매서드에 새로운 행동을 추가하거나 오버라이드 할 수 있다. – Façade ( 퍼사드 ) – 많은 분량의 코드에 접근할 수 있는 단순한 인터페이스를 제공한다. – Flyweight ( 플라이급 ) – 다수의 유사한 객체를 생성·조작하는 비용을 절감할 수 있다. – Proxy ( 프록시 )

– 접근 조절, 비용 절감, 복잡도 감소를 위해 접근이 힘든 객체에 대한 대역을 제공한다.

3. 행위패턴

– Chain of Responsibility ( 책임연쇄 ) – 책임들이 연결되어 있어 내가 책임을 못 질 것 같으면 다음 책임자에게 자동으로 넘어가는 구조 – Command ( 명령 ) – 위의 명령어를 각각 구현하는 것보다는 위 그림처럼 하나의 추상 클래스에 메서드를 하나 만들고 각 명령이 들어오면 그에 맞는 서브 클 래스가 선택되어 실행하는 것 – Interpreter ( 해석자 ) – 문법 규칙을 클래스화한 구조를 갖는SQL 언어나 통신 프로토콜 같은 것을 개발할 때 사용 – Iterator ( 반복자 ) – 반복이 필요한 자료구조를 모두 동일한 인터페이스를 통해 접근할 수 있도록 메서드를 이용해 자료구조를 활용할 수 있도록 해준다. – Mediator ( 중재자 ) – 클래스간의 복잡한 상호작용을 캡슐화하여 한 클래스에 위임해서 처리 하는 디자인 패턴 – Memento ( 메멘토 ) – Ctrl + z 와 같은 undo 기능 개발할 때 유용한 디자인패턴. 클래스 설계 관점에서 객체의 정보를 저장 – Observer ( 감시자 ) – 어떤 클래스에 변화가 일어났을 때, 이를 감지하여 다른 클래스에 통보해주는 것 – State ( 상태 ) – 동일한 동작을 객체의 상태에 따라 다르게 처리해야 할 때 사용하는 디자인 패턴 – Strategy ( 전략 ) – 알고리즘 군을 정의하고 각각 하나의 클래스로 캡슐화한 다음, 필요할 때 서로 교환해서 사용할 수 있게 해준다. – Template Method – 상위 클래스에서는 추상적으로 표현하고 그 구체적인 내용은 하위 클래스에서 결정되는 디자인 패턴 – Visitor ( 방문자 )

– 각 클래스의 데이터 구조로부터 처리 기능을 분리하여 별도의 visitor 클래스로 만들어놓고 해당 클래스의 메서드가

각 클래스를 돌아다니며 특정 작업을 수행하도록 하는 것

참고 사항

GoF_의_디자인_패턴.pdf

GoF_의_디자인_패턴.pdf

이 pdf파일이 굉장히 정리 잘되어있습니다.

웹 백엔드 관점으로 본 디자인 패턴 정리(1)

헤드퍼스트 디자인 패턴에서는 다음과 같은 13가지 패턴을 다루고 있다.

1. 전략 패턴

2. 옵저버 패턴

3. 데코레이터 패턴

4. 팩토리 패턴(팩토리 메서드, 추상 팩토리)

5. 싱글턴 패턴

6. 커맨드 패턴

7. 어댑터 패턴

8. 파사드 패턴

9. 템플릿 메서드 패턴

10. 반복자 패턴

11. 컴포지트 패턴

12. 상태 패턴

13. 프록시 패턴

디자인 패턴은 이외에도 다양하며, 다음의 링크에서 대부분의 패턴들을 확인할 수가 있다.

해당 링크가 가장 잘 정리되어 있는 것 같아서 종종 참고하고는 한다.

https://refactoring.guru/design-patterns/catalog

디자인 패턴은 크게 다음과 같이 세 가지로 분류할 수 있다.

생성: 객체의 생성과 관련된 패턴(싱글턴, 팩토리, 빌더 등)

행동: 객체들을 어떤 식으로 구성할건지와 관련된 패턴(전략, 상태, 옵저버, 반복자 등)

구조: 행위를 어떻게 처리할 것인지와 관련된 패턴(데코레이터, 컴포지트, 프록시 등)

이러한 구조가 실제 디자인 패턴을 도입하는 데에는 솔직히 도움은 하나도 안 된다고 보면 된다.

디자인 패턴의 적용은 특정 상황에 마주쳤을 때에 대한 해결책이기 때문에 이런 식으로 정리하는 건 딱히 의미가 없다.

그럼에도 분류가 좋은 이유는 이렇게 정리해두면 기억이 잘 되고,

면접 때 멋들어지게 말하기 좋은 듯하다.

다양한 패턴들을 분류함으로서 뭔가 체계적으로 정리되는 느낌이 있어서 난 좋아하기는 한다.

디자인 패턴을 기억하기에는 두 가지 키워드를 통해서 기억하는 것이 좋다.

바로 ‘상속’과 ‘컴포지션’ 이다.

다수의 디자인패턴들이 이 두 가지 방법을 이용해서 더 효율적인 구조를 만들어내곤 한다.

어떤 패턴은 상속만을 통해서 이루어지기도 하며,

어떤 패턴은 컴포지션을 이용해서 이루어지기도 한다.

어떤 패턴은 두 가지를 동시에 사용하기도 한다.

이건 각 패턴을 정리할 때마다 강조해볼 예정이다.

상속이야 익숙할 것이고 컴포지션만 간단하게 언급하고 넘어가겠다.

어떤 클래스의 기능을 다른 클래스에서 사용하는 방법으로는 보통 상속이 있는데,

상속은 어떤 클래스의 자식 클래스가 되기를 자청함으로 만들어진다.

저는 당신의 자식이 되겠습니다! 와 같은 느낌이다.

class Parent {} class Child extends Parent {}

이렇게 상속으로 구성하게 되면 Child는 Parent의 메서드들을 이어받아 사용할 수 있게 된다.

하지만 이러면 부모의 영향력이 자식에게 고스란히 전달된다.

부모님의 행동을 거부하기가 어렵다.

하지만 컴포지션은 부모의 행위를 내가 골라서 사용할 수 있다.

아니 컴포지션은 애초에 부모라고 생각도 안할거다.

class Unknown { … } class Me { private Unknown a; public Me(Unknown a){ this.a = a; } public void doMyWay(){ a.doSomething(); } }

위의 코드에서 나(Me)는 모르는 아저씨(Unknown)의 코드를 생성자 등을 통해서 가져와서 사용하기만 한다.

이러면 부모의 영향력에서 자유롭고 뭔가 좀 더 유연한 방식으로 코드를 구성할 수 있다.

메서드 오버라이딩 따위는 할 필요도 없게 된다.

그리고 아저씨의 모든 메서드를 사용할 필요도 없고 내가 필요한 것만 사용하면 된다.

이런게 컴포지션의 힘이고 많은 디자인 패턴들에서 사용하게 될 것이다.

참고로 이펙티브 자바 책에서도 ‘상속보다는 컴포지션을 사용하라’라는 장이 있으니 참고하면 좋다.

디자인 패턴과 친해지려면 컴포지션의 장점을 알고 익숙해지는 것이 좋다.

[디자인 패턴] 디자인 패턴 정리

목적

좀 더 나은 코드를 위해 어떤 패턴을 써야 유용할 지 한눈에 보고 판단하기 위함

목차

디자인 패턴이란? 생성패턴 구조패턴 행위패턴 디자인 패턴 비교

1. 디자인 패턴이란?

프로그램 설계 시 자주 발생하는 문제들을 해결 할 수 있는 프로그램 설계 방법

생성패턴 : 객체의 생성과 관련된 패턴

구조패턴 : 객체를 조합하여 더 큰 구조를 만드는 패턴

행위패턴 : 객체 사이의 알고리즘이나 책임 분배에 관련된 패턴

2. 생성패턴

프로토타입

기존에 생성된 객체를 복제해서 새로운 객체를 생성하는 패턴

기본은 얕은복사

Cloneable의 clone메소드를 오버라이딩하여 사용

팩토리 메서드

객체의 생성을 서브클래스로 분리하여 처리하는 패턴

팩토리 클래스를 만들어 클라이언트의 요구에 따른 객체를 반환

추상 팩토리

연관된 클래스들을 한꺼번에 생성하도록 만드는 패턴

관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우에 유용

싱글톤

전역변수를 사용하지 않고 객체를 하나만 생성하여, 어디서든지 참조할 수 있도록 하는 패턴

LazyHolder을 사용하는 싱글톤 패턴이 가장 이상적

빌더

객체의 생성과정과 표현방법을 분리하여 동일한 생성 절차에서 서로 다른 표현결과를 만들 수 있게 하는 패턴

점층적 생성자 패턴과 자바 빈 패턴 결합

3. 구조패턴

플라이웨이트

동일하거나 유사한 객체들 사이에 가능한 많은 데이터를 공유하여 메모리 사용을 최소화 하는 패턴

생성되는 객체의 수가 많거나, 생성된 객체가 오래도록 메모리에 상주 등에 적합

Integer.valueOf 메서드도 플라이웨이트 패턴을 사용하여 -128~127사이의 값은 캐싱하여 같은 참조값을 갖도록 만듦

프록시

실제 기능을 수행하는 객체대신 가상의 객체를 사용해 로직의 흐름을 제어하는 패턴

가상의 객체의 내부 코드가 실제 객체의 수행을 감싸고 있는 형태

퍼사드

일련의 서브 시스템의 인터페이스에 대한 통합된 인터페이스를 제공하여 서브 시스템 사용을 더 쉽게 할 수 있도록 하는 패턴

컴포지트

여러개의 객체들로 구성된 복합객체와 단일객체를 클라이언트에서 구별없이 다루게 해주는 패턴

파일 디렉토리와 같은 관계를 갖는 객체들 사이에 유용

클라이언트는 전체와 부분을 구별하지 않고 동일한 인터페이스 사용 가능

어댑터

어느 클래스의 인터페이스를 다른 클래스에서 사용하고자 할 때 다른 클래스에서 사용할 수 있도록 호환성을 제공하는 패턴

클래스 어댑터는 다중상속이 안되고 실행 중간에 변경할 수 도 없으므로, 객체 어댑터 사용이 나음

브리지

구현으로부터 기능을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴

데코레이터

객체의 결합을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주는 패턴

기본 기능에 추가할 수 있는 기능의 종류가 많은 경우, 각 추가 기능을 Decorator클래스로 정의하고 필요한 Decorator객체를 조합하여 사용

4. 행위패턴

템플릿 메서드

어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체 일을 수행하는 구조는 바뀌지 않으면서, 특정 단계에서 수행하는 내역을 바꾸는 패턴

메인로직은 추상클래스의 일반메서드로 정의, 구현마다 달라질 기능은 구현 클래스에서 선언 후 호출하는 방식으로 사용

커맨드

객체의 행위를 클래스로 만들어 캡슐화하는 패턴

기능이 수정되거나 확장될 때 기존 코드의 수정 없이 기능에 대한 클래스를 적용하면 되므로 시스템 확장성이 있으면서 유연해짐

책임연쇄

요청을 처리하는 동일 인터페이스 객체들을 체인 형태로 연결해놓은 패턴

앞의 객체가 요청을 처리하지 못할 경우, 같은 인터페이스의 다른 객체에게 해당 요청을 전달

자바의 exception처리가 대표적

중재자

모든 클래스간의 복잡한 로직을 캡슐화하여 하나의 클래스에 위임하여 처리하는 패턴

M:N의 관계에서 M:1의 관계로 복잡도를 떨어뜨려 유지보수 및 재사용의 확장에 유리

전략

행위를 클래스로 캡슐화하여 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴

전략을 쉽게 변경할 수 있음

옵저버

어떤 객체의 상태가 변하거나 이벤트가 발생했을 때 그와 연관된 객체들에 알림을 보내는 패턴

상태

상태를 클래스로 만들어 어떤 행위를 수행할 때 상태에 행위를 수행하도록 위임하는 패턴

시스템의 각 상태를 클래스로 분리하여 표현

방문자

데이터 구조와 기능을 분리하여 구조를 변경하지 않고 새로운 기능을 추가할 수 있는 패턴

새로운 연산 추가 시 방문자만 추가하면 됨

메멘토

객체의 상태 정보를 저장하고, 필요에 의해 원하는 시점의 데이터를 복원할 수 있는 패턴

5. 디자인 패턴 비교

키워드에 대한 정보 디자인 패턴 정리

다음은 Bing에서 디자인 패턴 정리 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

See also  물 이 포도주 되고 | Our God (크신내주님/물이포도주되고) - 심형진 전도사 @얼바인온누리교회 (전 예수전도단 캠퍼스워십/화요모임) 185 개의 새로운 답변이 업데이트되었습니다.
See also  쟈건 42 화 | [대장금/Jewel In The Palace] 42화(하) 열이의 음모는 무산되고, 유황오리 사건을 파헤치기 위해 장금은 무모한 시도를 하는데 L Mbc040210 방송 7550 좋은 평가 이 답변

See also  온땅 의 주인 되신 주님 이 | [Anointing 12] 12 온 땅의 주인_Who Am I (Official Lyrics) 빠른 답변

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 Design pattern, Factory Pattern, 디자인패턴, 팩토리 패턴

  • 디자인패턴
  • OOP
  • 생성 디자인 패턴
  • 생성
  • 공장패턴
  • 팩토리 패턴

Design #pattern, #Factory #Pattern, #디자인패턴, #팩토리 #패턴


YouTube에서 디자인 패턴 정리 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 Design pattern, Factory Pattern, 디자인패턴, 팩토리 패턴 | 디자인 패턴 정리, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *