디자인 패턴 5

5. Strategy - 패스트캠퍼스 백엔드 부트캠프 3기

1. 전략패턴같은 문제를 다른 방법으로 해결하기 쉽게 만들어 주는 패턴2. 예제 enum Handpublic enum Hand { // 가위 바위 보를 나타내는 세 개의 enum 상수 ROCK("바위", 0), SCISSORS("가위", 1), PAPER("보", 2); //enum이 가진 필드 private String name; // 가위 바위 보 손의 이름 private int handvalue; // 가위 바위 보 손의 값 // 손의 값으로 상수를 얻기 위한 배열 private static Hand[] hands = { ROCK, SCISSORS, PAPER }; // 생성자 private Hand(String nam..

디자인 패턴 2025.02.17

4. Template Method - 패스트캠퍼스 백엔드 부트캠프 3기

1. 하위 클래스에서 구체적으로 처리한다상위 클래스에서 처리의 뼈대를 결정하고 하위 클래스에서 그 구체적 내용을 결정하는 디자인 패턴상위 클래스 쪽에 템플릿이될 메서드가 정의되어 있고, 그 메소드 정의에 추상 메소드가 사용된다.추상 메서드를 실제로 구현하는 것은 하위 클래스이다.2. 예제추상 클래스 AbstractDisplaypublic abstract class AbstractDisplay { // open, print, close는 하위 클래스에 구현을 맡기는 추상 메서드 public abstract void open(); public abstract void print(); public abstract void close(); // display는 AbstractDispl..

디자인 패턴 2025.02.11

3. Prototype - 패스트캠퍼스 백엔드 부트캠프 3기

1. Prototype복사해서 인스턴스를 만든다종류가 너무 많아 클래스로 정리할 수 없는 경우취급할 오브젝트 종류가 너무 많아서, 하나하나 다른 클래스로 만들면 소스 파일을 많이 작성해야 하는경우클래스로부터 인스턴스 생성이 어려운 경우생성하고 싶은 인스턴스가 복잡한 과정을 거쳐 만들어지는 것으로, 클래스로부터 만들기가 매우 어려운 경우프레임워크와 생성하는 인스턴스를 분리하고 싶은 경우인스턴스를 생성하는 프레임워크를 특정 클래스에 의존하지 않게 하고 싶은 경우왜 복사를 하는가?생성하는 과정이 어렵고 복잡하고 효율이 안좋아서 복사만하면 그 많은 과정과 자원을 아낄 수 있다.하나의 객체만 사용하는 것과 복제를 사용하는 것 사이에는 중요한 차이복제본을 만들면, 원본 객체와 복제본이 각각 독립적인 상태를 가질 수..

디자인 패턴 2025.02.10

2. Flyweight(추가예정) - 패스트캠퍼스 백엔드 부트캠프 3기

1. 같은 것은 공유해서 낭비를 없앤다.이미 만들어진 인스턴스를 공유해서 사용하는 것이 Flyweight패턴의 핵심객체를 가볍게 만들기 (메모리를 적게 사용) 위함공유하고 있는 것을 변경하면 여러 곳에 영향을 미친다.공유하는 정보 : 변하지 않는 정보, 상태에 의존하지 않는 정보공유하지 않는 정보 : 인스턴스 배치 장소에 따라 변경되는 정보, 상황에 따라 변화하는 정보, 상태에 의존하는 정보관리되는 인스턴스는 가비지 컬렉션되지 않는다.가비지 컬렉션은 사용되지 않는 인스턴스를 해제한다.Java에서는 new로 생성한 인스턴스를 삭제할 수 없으며, 다른 곳에서 참조되고 있는 인스턴스는 '사용 중'으로 간주하여 가비지로 판정되지 않는다.

디자인 패턴 2025.02.06

1. Singleton - 패스트캠퍼스 백엔드 부트캠프 3기

1. Singleton패턴이란?인스턴스가 하나만 존재하는 것을 보증하는 패턴Singleton은 클래스변수로 정의된다.Singleton 클래스의 인스턴스에서 초기화한다.Singleton 클래스를 로드할 때 단 한 번만 초기화Singleton 클래스의 생성자는 private이다.Singleton 클래스 외부에서 생성자 호출을 금지하기 위함Singleton 클래스의 인스턴스를 얻는 메소드로 getInstance(변경가능)를 정의public class Singleton { // 1. Singleton은 클래스변수로 정의된다. private static Singleton singleton = new Singleton(); // 2. Singleton의 생성자는 private이다. pr..

디자인 패턴 2025.02.06