Design Pattern 5

[Design Pattern] 템플릿 메소드 패턴

1. 템플릿 메소드 패턴이란? 알고리즘의 골격을 정의한다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도 있다. "알고리즘의 틀을 만들기 위한 패턴" 2. 예시 1) 커피와 홍차가 만들어지는 법 비교해보기 1. 커피 만드는 법 1) 물을 끓인다. 2) 끓는 물에 커피를 우려낸다. 3) 커피를 컵에 따른다. 4) 설탕과 우유를 추가한다. 2. 홍차 만드는 법 1) 물을 끓인다. 2) 끓는 물에 차를 우려낸다. 3) 차를 컵에 따른다. 4) 설탕을 추가한다. 여기서 음료를 준비하는 단계는 물 끓이기 → 우리기 → 컵에 붓기 → 첨가물 추가하기 순으로 이루어진다. 아래 클래스를 보자. pu..

Design Pattern 2023.03.05

[Design Pttern] 데코레이터 패턴

1. 데코레이터 패턴? - 데코레이터 패턴으로 객체에 추가 요소를 동적으로 더할 수 있는 패턴이다. - 데코레이터를 사용하면 서브클래스를 만들 때보다 훨 씬 유연하게 기능을 확장할 수 있다. [역할] Component : 실질적인 인스턴스를 컨트롤하는 역할 ConcreteComponent : Component의 실질적인 인스턴스의 부분으로 책임의 주체의 역할 Decorator : Component와 ConcreteDecorator를 동일시 하도록 해주는 역할 ConcreteDecoreator : 실질적인 장식 인스턴스 및 정의이며 추가된 책임의 주체 2. 데코레이터 패턴의 장단점 장점 1. 기존 코드를 수정하지 않고도 데코레이터 패턴을 통해 행동을 확장시킬 수 있다. 2. 구성과 위임을 통해서 실행중에 ..

Design Pattern 2023.02.05

[Design Pattern] MVC패턴

1. MVC패턴이란? Model + View + Controller를 합친 용어이다. Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분 View : 사용자에서 보여지는 UI 부분 Controller : 사용자의 입력을 받고 처리하는 부분 2. MVC패턴의 흐름 클라이언트가 입력하여 요청 (ex. 저장버튼 클릭) 서버에 데이터를 요청, Controller에 요청한다. Controller에서 사용자에게 받은 데이터를 처리하기 위해 로직을 수행한다. Controller는 필요한 데이터들을 Model과 주고 받음 Controller는 View에게 결과를 전달한다. 사용자에게 화면 결과를 보여줌 3. MVC패턴 코드 //Controller 모델을 통해 데이터를 받아 View로 보낸다 Cl..

Design Pattern 2023.01.09

[Design Patter] 상태패턴

1. 상태패턴이란? 상태를 객체화하여 필요에 따라 다르게 행동하도록 위임하는 디자인 패턴이다. 즉, 객체의 내부 상태가 바뀜에 따라 객체의 행동을 바꿀 수 있다. 객체의 특정 상태 = 클래스 상태에 따른 행위 = 클래스 내의 메서드 ex) 뽑기 기계를 코드로 구현할 때 각각 알맹이 매진, 동전 없음, 동전 있음, 알맹이 판매 4가지의 상태가 있다. 4가지의 상태 클래스를 인터페이스로 캡슐화 시킨다. 2. 상태패턴을 사용하는 이유 뽑기 예제를 예시로 들어보자. 아래 코드와 같이 구현하면, 새로운 추가 요청 사항이 생긴다면 모든 메서드에 조건문을 추가해줘야 한다. 따라서 상태패턴을 "확장성"을 더욱 용이하기 위해 사용한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19..

Design Pattern 2023.01.07

[Design Pattern] 싱글톤 패턴

1. 싱글톤 패턴? 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공하는 디자인 패턴이다. 생성자가 여러번 호출되어도 실제로 생성되는 객체는 하나이며, 최초로 생성된 이후에 호출된 생성자는 이미 생성한 객체를 반환시키도록 만드든 것 ex)Singleton 클래스다이어그램 uniqueInstance라는 클래스 변수에 싱클톤의 하나뿐인 인스턴스가 저장된다. getInstance()메소드는 정적 메소드로 Singleton.getInstance()라는 코드만 사용하면 언제든 이 메소드를 호출할 수 있다. 전역변수에 접근하는 것처럼 '쉬우면서 게으른 인스턴스'를 생성할 수 있다는 장점이 있다. 2. 장점과 단점 1) 장점 객체를 생성할 때마다 메모리 영역을 할당 받아야 한다. 하지만 한번의 ne..

Design Pattern 2022.12.17