본문 바로가기

Develop/Back-End

[JAVA] Design Pattern 이 도대체 뭘까? 공부해야 할까?

자바 디자인 패턴이 도대체 뭘까 필요한걸까?

공부해야되는걸까..? 🤔

 

위와 같은 질문에 나의 대답은

공부해야 한다😞

 

디자인 패턴을 알면 보다 소스 파악이 쉽고

표준화나 코어쪽 개발 직무를 맡을 정도 연차가 된다면 필요성을 느끼게 될 것이라고 생각한다.

 

"물론 이제 막 개발에 입문했거나 또는 공부중인 학생이라면 

겉핧기식으로 보고 넘어가라고 말해주고 싶다.🤗"

 

"아니 몰라도 개발 잘만 하는데? 😝"

 

이 생각을 갖고 있다면 잘하고 있다. 조금 더 많은 문제로 고통 받으면 발견할 것이다.

 

우린 사실 개발하면서 많은 디자인 패턴을 사용하고 있다.Singleton 패턴 MVC 패턴 Builder 패턴, factory method 패턴

사용중인 패턴만이라도... 😤

 

그럼 이제 디자인 패턴 정의와 사용이유 그리고 분류에 대해 알아보자. 😎


1. 디자인 패턴이란

 

" 디자인 패턴(Design Pattern)은 소프트웨어 디자인에서 주어진 컨텍스트 내에서 일반적으로 발생하는 문제에 대한 

        재사용 가능한 일반적인 솔루션" 😵

 


 

2. 디자인 패턴 사용 이유

 

유연성 : 디자인 패턴을 사용하면 코드가 유연해지며 개체가 서로 느슨하게 결합되어 코드를 쉽게 변경할 수 있으므로 올바른 수준의 추상화를 제공하는데 도움이 된다.

재사용성 : 느슨하게 결합되고 결합된 객체 및 클래스는 코드를 더 재사용할 수 있게 만들며 이러한 종류의 코드는 고도로 결합된 코드에 비해 테스트 하기 쉽다.

공유 어휘 : 공유 어휘를 사용하면 코드와 생각을 다른 팀원과 쉽게 공유할 수 있으며 코드와 관련된 팀원 간의 이해를 높일 수 있다.

모범 사례 캡처 : 디자인 패턴은 문제에 성공적으로 적용된 솔루션을 캡쳐하며 이러한 패턴과 관련 문제를 학습함으로써 미숙한 개발자는 소프트웨어 디자인에 대해 많은 것을 배울 수 있다.


3.디자인 패턴 분류

디자인 패턴은 크게 세가지 분류로 나뉘어 진다.

생성(Creational) 패턴 구조(Structural) 패턴 행위(Behavioral) 패턴
추상 팩토리(Abstract Factory)
빌더(Builder)
팩토리 메서드(Factory Method)
프로토 타입(Prototype)
싱글턴(Singleton)
어댑터(Adapter)
브릿지(Bridge)
컴퍼지트(Composite)
데커레이터(Decorator)
퍼사드(FaA§ade)
플라이웨이트(Flyweight)
프록시(Proxy)
체인 오브 리스폰스빌리티
(Chain of Responsibility)
커맨드(Command)
인터프리터(Interpreter)
이터레이터(Iterator)
미디에이터(Mediator)
메멘토(Memento)
옵저버(Observer)
스테이트(State)
스트래티지(Strategy)
템플릿 메서드(Template Method)
비지터(Visitor)

 

 

1. 생성(Creational) 패턴

   생성 디자인 패턴은 개체의 인스턴스화 프로세스를 디자인하는데 사용된다.

 

2. 구조(Structural) 패턴

    클래스나 객체를 조합해 더 큰 구조를 만드는 패턴이다.
    예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운

   기능을 제공하는 패턴이다.

3. 행위(Behavioral) 패턴

  객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴이다.

  한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지, 또 그렇게 하면서도 객체 사이의 결합도를  최소화하는 것에 중점을 둔다.

 


추후 시간이 남으면 내가 아는 패턴에 대해 예제를 작성하여 소스를 작성하여 공유하겠다

지금은 너무 졸린 관계로.. 😴

 

 

* Reference

   Java Design Patterns - by Rohit Joshi

   리팩토링 구루 - https://refactoring.guru/ko/design-patterns

 

디자인 패턴들

 

refactoring.guru

 

본문 중 틀린 내용이 있으면 언제든지 말씀해주시면 수정하도록 하겠습니다.

 

 

반응형