본문 바로가기
공부자료/자바

Factory pattern

by MIS경영정보 2023. 2. 4.
반응형

팩토리 패턴은 개체를 만드는 간단한 방법을 제공하기 위해 객체 지향 프로그래밍에서 사용되는 생성 디자인 패턴입니다. Factory 패턴은 객체 생성 프로세스를 캡슐화하는 방법을 제공하므로 클라이언트 코드는 객체 생성 방법에 대한 특정 세부 정보를 알 필요가 없습니다. 대신 클라이언트 코드는 원하는 개체의 인스턴스를 반환하는 팩토리 메서드를 호출합니다.

Java에서 팩토리 패턴은 원하는 개체의 인스턴스를 반환하는 팩토리 메서드를 포함하는 팩토리 클래스를 생성하여 구현할 수 있습니다. 팩토리 메소드는 생성할 객체의 유형을 입력으로 받아 해당 객체의 인스턴스를 반환합니다. 클라이언트 코드는 객체 생성 방법에 대한 특정 세부 사항을 알 필요 없이 팩토리 메서드를 호출하고 원하는 객체의 인스턴스를 수신합니다.

interface Shape {
   void draw();
}

class Circle implements Shape {
   @Override
   public void draw() {
      System.out.println("Circle");
   }
}

class Square implements Shape {
   @Override
   public void draw() {
      System.out.println("Square");
   }
}

class ShapeFactory {
   public Shape getShape(String shapeType) {
      if (shapeType == null) {
         return null;
      }
      if (shapeType.equalsIgnoreCase("CIRCLE")) {
         return new Circle();
      }
      else if (shapeType.equalsIgnoreCase("SQUARE")) {
         return new Square();
      }
      return null;
   }
}

이 예제에서 Shape 인터페이스는 모든 도형이 구현해야 하는 draw() 메서드를 정의합니다. Circle 및 Square 클래스는 Shape 인터페이스를 구현하고 draw() 메서드의 구체적인 구현을 제공합니다. ShapeFactory 클래스에는 팩토리 메서드 역할을 하는 getShape() 메서드가 포함되어 있습니다. getShape() 메서드는 만들 모양의 유형을 입력으로 사용하고 원하는 모양의 인스턴스를 반환합니다.

팩토리 패턴의 주요 이점 중 하나는 개체를 만드는 간단한 방법을 제공한다는 것입니다. 클라이언트 코드는 개체가 생성되는 방법에 대한 특정 세부 정보를 알 필요가 없으며 간단히 팩토리 메서드를 호출하여 원하는 개체의 인스턴스를 받을 수 있습니다. 이렇게 하면 클라이언트 코드에 영향을 주지 않고 개체 생성 프로세스를 변경하거나 업데이트할 수 있으므로 코드를 단순화하고 더 유연하고 유지 관리할 수 있습니다.

Factory 패턴의 또 다른 이점은 코드의 테스트 가능성을 향상시킬 수 있다는 것입니다. 팩토리 메서드에서 개체 생성 프로세스를 캡슐화하면 코드의 특정 부분을 보다 쉽게 ​​격리하고 테스트할 수 있습니다. 이렇게 하면 코드의 버그 수를 줄이고 전반적인 품질을 향상하는 데 도움이 될 수 있습니다.

그러나 Factory 패턴에는 몇 가지 잠재적인 단점이 있습니다. 주요 단점 중 하나는 생성되는 개체 외에도 팩토리 클래스 및 팩토리 메서드를 생성해야 하므로 코드에 추가 복잡성 계층을 추가할 수 있다는 것입니다. 또한 팩토리 패턴은 팩토리 클래스와 팩토리 메서드가 코드 전체에서 사용되므로 코드를 더 긴밀하게 결합할 수 있습니다. 이렇게 하면 나중에 코드를 변경하거나 리팩토링하기가 더 어려워질 수 있습니다.

결론적으로 Factory 패턴은 개체를 만드는 간단한 방법을 제공하는 개체 지향 프로그래밍에서 유용한 디자인 패턴입니다. Factory 패턴은 객체 생성 프로세스를 캡슐화하고 생성 방법에 대한 특정 세부 정보를 알 필요 없이 객체를 생성하는 방법을 제공합니다. 이 패턴은 코드를 단순화할 수 있습니다.

'공부자료 > 자바' 카테고리의 다른 글

Singleton pattern  (0) 2023.02.04
자바 암호 구조 (Java Cryptography Architecture)  (0) 2023.02.04
Java Microservices  (0) 2023.02.04
Java Performance Tuning  (0) 2023.02.04
Java Garbage Collection 최적화를 위한 팁  (0) 2023.01.29

댓글