반응형

Dev/[DesignPattern] 29

[Dev] mvc패턴에 대해 알아보자

MVC 패턴이란 무엇인가? MVC (Model-View-Controller) 패턴은 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴입니다. 이 패턴은 애플리케이션의 구성 요소들을 세가지 역할로 구분하여 분리하는 방법을 제공합니다. MVC 패턴은 명확한 역할 분담을 통해 애플리케이션의 유지 보수성을 높이고, 확장성을 향상시키며, 코드의 재사용성을 높일 수 있도록 도와줍니다. 1. Model (모델) 모델은 애플리케이션의 데이터 및 비즈니스 로직을 포함하는 부분입니다. 데이터베이스, 외부 API와의 통신, 데이터 유효성 검증 등과 같은 역할을 수행합니다. 모델은 애플리케이션의 상태와 동작에 관한 근본적인 로직을 담당하므로, 데이터의 변경 및 조작을 처리하는 역할을 맡습니다. 2. View (뷰) 뷰는 사..

Dev/[DesignPattern] 2023.07.26

[Dev] 방문자 패턴 에 대해 알아보자

Dev] 방문자 패턴에 대해 알아보자 1. 방문자 패턴이란 무엇인가요? 방문자 패턴(visitor pattern)은 객체지향 소프트웨어 디자인 패턴 중 하나로, 복합 객체의 구조와 구조를 따라가는 작업을 분리하기 위해 사용되는 패턴입니다. 이 패턴은 어떤 객체 구조를 만들 때, 각각의 객체에 대해 새로운 동작을 추가하고 싶을 때 유용하게 적용될 수 있습니다. 즉, 객체 구조를 수정하지 않고도 새로운 동작을 추가할 수 있는 패턴입니다. 2. 어떤 상황에서 방문자 패턴을 사용할까요? 방문자 패턴은 다음과 같은 상황에서 유용하게 사용될 수 있습니다: 2.1 객체 구조의 수정 없이 새로운 동작을 추가하고자 할 때 방문자 패턴을 사용하면 객체 구조를 수정하지 않고도 새로운 동작을 추가할 수 있습니다. 예를 들어,..

Dev/[DesignPattern] 2023.07.26

[Dev] 템플릿 메소드 패턴 에 대해 알아보자

템플릿 메소드 패턴 (Template Method Pattern)이란? 템플릿 메소드 패턴은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나로, 알고리즘의 구조를 정의하는데 사용됩니다. 이 패턴은 상위 클래스에서 알고리즘의 골격을 정의하고, 하위 클래스에서 여러 단계를 구현하는 방식으로 동작합니다. 이를 통해 알고리즘의 구조는 변경이 없으면서 각 단계의 구현은 하위 클래스에서 자유롭게 정의할 수 있습니다. 템플릿 메소드 패턴의 구조 템플릿 메소드 패턴은 다음과 같은 구조로 이루어져 있습니다. AbstractClass (추상 클래스) : 알고리즘의 구조를 정의하고 템플릿 메소드를 선언하는 클래스입니다. 이 클래스는 모든 하위 클래스에서 공통으로 사용되는 알고리즘의 단계를 정의합니다. ConcreteCla..

Dev/[DesignPattern] 2023.07.26

[Dev] 전략 패턴 (strategy) 에 대해 알아보자

전략 패턴 (Strategy Pattern)이란? 전략 패턴은 객체 간의 관계에서 알고리즘을 정의하고, 해당 알고리즘을 동적으로 변경할 수 있는 행위 디자인 패턴입니다. 이 패턴은 알고리즘을 캡슐화하여 클라이언트로부터 독립시키는데 목적이 있습니다. 이를 통해 알고리즘을 변경하거나 확장하기 쉬워지며, 코드 재사용성과 유지보수성이 향상됩니다. 언제 전략 패턴을 사용해야 할까요? 전략 패턴은 다음과 같은 경우에 적합합니다: - 여러 알고리즘 중 하나를 선택해야 할 때 - 알고리즘을 동적으로 변경해야 할 때 - 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경하고 확장하고자 할 때 - 알고리즘을 캡슐화하여 재사용성과 유지보수성을 향상시키고자 할 때 전략 패턴의 구성 요소는 무엇인가요? 전략 패턴은 크게..

Dev/[DesignPattern] 2023.07.26

[Dev] 상태 패턴 (state) 에 대해 알아보자

상태 패턴(State Pattern)이란 무엇인가요? 상태 패턴(State Pattern)은 소프트웨어 개발에서 객체 지향 디자인 패턴 중 하나로, 객체의 내부 상태에 따라 동작을 변경할 때 사용되는 패턴입니다. 이 패턴은 상태를 독립적인 클래스로 캡슐화하여 객체의 상태에 따라 동작을 변경하고, 새로운 상태로의 전이를 관리합니다. 상태 패턴은 객체의 행동을 상태에 의존하도록 설계함으로써, 상태 전이 로직을 간결하고 유연하게 만들어줍니다. 이로써 객체 내부의 복잡한 조건문을 줄여 코드 유지보수성을 높일 수 있습니다. 사용법 예시: 램프의 상태 변화 관리 한 가정용 램프를 예시로 상태 패턴을 설명해보겠습니다. 램프는 다양한 상태를 가질 수 있으며, 그에 따라 동작도 달라집니다. 이를 상태 패턴으로 구현해보겠..

Dev/[DesignPattern] 2023.07.26

[Dev] publisher subscriber에 대해 알아보자

Publisher-Subscriber (발행-구독) 패턴에 대해 알아보자 개요 Publisher-Subscriber 패턴은 소프트웨어 아키텍처 패턴 중 하나로, 비동기 통신을 통해 컴포넌트간의 느슨한 결합을 제공하는 방식입니다. 이 패턴은 이벤트 기반 시스템에서 널리 사용되며, 좋은 확장성과 유연성을 제공합니다. 구성 요소 Publisher (발행자): 이벤트를 발생시키고, 이벤트를 처리할 subscriber에게 전송하는 주체입니다. Subscriber (구독자): 발행자로부터 이벤트를 수신하고, 이벤트를 처리하는 주체입니다. Event (이벤트): 발생한 동작이나 상태 변경 등의 정보를 가지고 있는 객체입니다. Event Bus (이벤트 버스): 발행자와 구독자 간의 통신을 중개하는 메커니즘입니다. 이..

Dev/[DesignPattern] 2023.07.26

[Dev] 옵저버 (observer) 패턴이란 무엇이지 알아보자

옵저버 (Observer) 패턴이란 무엇인가? 옵저버 패턴은 소프트웨어 개발에서 많이 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 객체 간에 일 대 다의 의존성을 정의하며, 각각의 상태 변경이 다른 객체에게 자동으로 알려지게 합니다. 옵저버 패턴은 주로 이벤트 처리나 상태 감지와 같은 기능을 구현하는 데 사용되며, 객체 간의 결합도를 낮추고 유연하고 확장 가능한 시스템을 구축하는 데 도움을 줍니다. 옵저버 패턴의 구성요소 옵저버 패턴은 다음과 같은 구성요소로 이루어져 있습니다: 1. 주제(Subject): 상태가 변경되는 대상 객체입니다. 주제는 옵저버들에 대한 정보를 가지고 있으며, 상태 변경 시 알림을 보내야 합니다. 2. 옵저버(Observer): 주제의 상태 변경을 감시하고, 변경 사항에 대한..

Dev/[DesignPattern] 2023.07.26

[Dev] 메멘토 (Memento) 패턴이란 무엇이지 알아보자

메멘토 (Memento) 패턴이란 무엇인가? 메멘토(Memento) 패턴은 객체의 상태를 저장하고 복원하기 위해 사용되는 디자인 패턴입니다. 이 패턴은 객체의 상태를 캡슐화하고, 나중에 이 상태를 자유롭게 복원할 수 있도록 합니다. 이를 통해 객체의 상태를 다양한 시점에서 저장하고 복원할 수 있습니다. 메멘토 패턴은 알고리즘의 실행 상태, 사용자 인터페이스의 상태, 데이터베이스 트랜잭션의 상태 등 다양한 상태를 저장하고 재사용할 수 있는 유연성을 제공합니다. 또한 메멘토 패턴은 객체의 불변성을 보장하여 데이터의 일관성과 안전성을 유지할 수 있습니다. 메멘토 패턴의 구성 요소 메멘토 패턴은 다음과 같은 구성 요소로 구성됩니다: Originator (생성자): 상태를 저장하거나 복원해야 하는 객체입니다. O..

Dev/[DesignPattern] 2023.07.26

[Dev] 반복자 (iterator) 패턴이란 무엇이지 알아보자

반복자 (Iterator) 패턴이란 무엇인가요? 반복자 (Iterator) 패턴은 자료 구조의 요소들에 접근하는 방법을 일관된 방식으로 제공하는 디자인 패턴입니다. 이 패턴은 컬렉션 내부의 요소에 대한 접근을 캡슐화하고, 클라이언트 코드에서 요소에 대한 직접적인 접근을 피할 수 있도록 합니다. 반복자 패턴을 사용하면 컬렉션을 수정하지 않고도 요소에 대한 반복 및 검색 작업을 수행할 수 있습니다. 왜 반복자 패턴을 사용해야 하나요? 반복자 패턴을 사용하면 다음과 같은 장점을 얻을 수 있습니다: 분리된 코드: 반복 로직을 컬렉션 자체에서 분리함으로써, 컬렉션 클래스와 클라이언트 코드를 독립적으로 변경할 수 있습니다. 이로 인해 유지보수성이 향상됩니다. 다양한 순회 방법: 사용자는 요소를 접근하기 위해 자신만..

Dev/[DesignPattern] 2023.07.26

[Dev] 인터프리터 (interpreter) 패턴이란 무엇이지 알아보자

인터프리터 (Interpreter) 패턴이란 무엇인가? 인터프리터 패턴은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나로, 언어나 문법을 해석하고 실행하는 역할을 수행하는 패턴입니다. 이 패턴은 주로 컴파일러나 인터프리터, 통신 프로토콜 계층, 기타 도메인 특화 언어(DSL)의 해석기를 개발할 때 사용됩니다. 인터프리터 패턴은 해석할 문법에 대한 문법 트리를 구축하고, 이 트리를 통해 실제 실행을 수행하는 방식으로 동작합니다. 이 패턴은 기본적으로 문법의 각 구문 요소를 클래스로 표현하며, 이러한 클래스들을 조합하여 문법 트리를 생성합니다. 그리고 이 트리를 순회하면서 인터프리터가 각 요소를 해석하고 실행합니다. 인터프리터 패턴은 문법을 해석하고 실행하는 방식이기 때문에, 언어나 문법을 동적으로 변경..

Dev/[DesignPattern] 2023.07.26
반응형
//