본문 바로가기

STUDY/# java design pattern

Java Design Pattern - Factory Method Pattern

반응형

[Design Pattern]

자바 팩토리 패턴 (JAVA Factory Method Pattern) 

by commin

Factory Method Pattern 이란?

Factory Method Pattern은 객체 생성을 위한 인터페이스를 정의합니다. 이 인터페이스는 객체 생성을 위한 메서드를 정의하며, 실제로 객체를 생성하는 클래스는 이 인터페이스를 구현합니다. 객체를 사용하는 클래스는 생성된 객체의 인터페이스를 사용하여 객체를 사용합니다.

이 패턴을 사용하면 객체 생성과 사용을 분리할 수 있습니다. 객체 생성 코드를 별도의 클래스로 분리하여 객체 생성에 대한 책임을 전담하는 클래스를 만들 수 있습니다. 이를 통해 유지 보수성과 확장성을 개선할 수 있습니다.

Factory Method Pattern 예시 코드

다음은 Factory Method Pattern을 사용한 예시 코드입니다. 이 예시에서는 Document 클래스를 생성하는 팩토리를 구현합니다.

Document 클래스

public abstract class Document {
    public abstract String getType();
}

TextDocument 클래스

public class TextDocument extends Document {
    public String getType() {
        return "Text";
    }
}

SpreadSheetDocument 클래스

public class SpreadSheetDocument extends Document {
    public String getType() {
        return "Spreadsheet";
    }
}

DocumentFactory 인터페이스

public interface DocumentFactory {
    public Document createDocument();
}

TextDocumentFactory 클래스

public class TextDocumentFactory implements DocumentFactory {
    public Document createDocument() {
        return new TextDocument();
    }
}

SpreadSheetDocumentFactory 클래스

public class SpreadSheetDocumentFactory implements DocumentFactory {
    public Document createDocument() {
        return new SpreadSheetDocument();
    }
}

Main 클래스

public class Main {
    public static void main(String[] args) {
        DocumentFactory textFactory = new TextDocumentFactory();
        Document textDocument = textFactory.createDocument();
        System.out.println("Text document type: " + textDocument.getType());

        DocumentFactory spreadSheetFactory = new SpreadSheetDocumentFactory();
        Document spreadSheetDocument = spreadSheetFactory.createDocument();
        System.out.println("Spreadsheet document type: " + spreadSheetDocument.getType());
    }
}

위 예시 코드에서 DocumentFactory 인터페이스는 Document 객체를 생성하기 위한 팩토리 인터페이스입니다. TextDocumentFactory와 SpreadSheetDocumentFactory는 DocumentFactory를 구현한 클래스로, 각각 TextDocument와 SpreadSheetDocument를 생성합니다.

Main 클래스에서는 DocumentFactory 인터페이스를 사용하여 Document 객체를 생성합니다. 이를 통해 객체 생성과 사용을 분리할 수 있습니다.

Factory Method Pattern은 객체 생성과 사용을 분리하기 위한 패턴입니다. 이를 사용하면 객체 생성 코드를 별도의 클래스로 분리하여 객체 생성에 대한 책임을 전담하는 클래스를 만들 수 있습니다.

반응형