Creative Saplings

GeeksforGeeks (한국어)

9월 29, 2020
No Comments

객체 생성에 대해 이야기하는 생성 디자인 패턴입니다. 팩토리 디자인 패턴은 인터페이스 (자바 인터페이스 또는 추상 클래스)를 정의하고 서브 클래스가 인스턴스화 할 객체를 결정하도록합니다. 인터페이스의 팩토리 메서드를 사용하면 클래스가 하나 이상의 구체적인 하위 클래스로 인스턴스화를 연기 할 수 있습니다. 이 디자인 패턴은 개체의 인스턴스화에 대해 이야기하므로 창조 디자인 패턴의 범주에 속합니다. 팩토리 메서드라는 이름을 알아 차리면 팩토리라는 메서드가 있고 일반적으로 팩토리는 창조물과 관련이 있으며 여기에 객체가 생성되고 있음을 의미합니다. 객체 생성 로직이 클라이언트에게 숨겨진 객체를 생성하는 가장 좋은 방법 중 하나입니다. 이제 구현을 살펴 보겠습니다.

구현 :
1. 인터페이스 내부에 팩토리 메소드를 정의하십시오.
2. 서브 클래스가 위의 팩토리 메소드를 구현하고 생성 할 객체를 결정하도록합니다.
Java에서 생성자는 다형성이 아니지만 서브 클래스가 객체를 생성하도록 허용함으로써 인스턴스화에 다형성 동작을 추가합니다. 간단히 말해서, 우리는 서브 클래스가 무엇을 만들지 결정하도록하여 의사 다형성을 달성하려고합니다. 따라서이 Factory 메서드는

Virtual 생성자라고도합니다. 실시간 문제와 몇 가지 코딩 연습을 통해 구현해 보겠습니다.

문제 설명 :
이메일, SMS, 푸시 알림을 통해 알림 서비스를 구현하고 싶다고 생각하세요. 팩토리 메서드 디자인 패턴을 사용하여이를 구현해 보겠습니다. 먼저이를위한 UML 클래스 다이어그램을 디자인합니다.

위의 클래스 다이어그램에는 Notification이라는 인터페이스가 있으며 세 가지 구체적인 클래스가 Notification 인터페이스를 구현하고 있습니다. Notification 객체를 얻기 위해 팩토리 클래스 NotificationFactory가 생성됩니다. 이제 코딩을 시작하겠습니다.

알림 인터페이스 생성

java

public interface Notification {
void notifyUser();
}



참고 -위의 인터페이스는 추상 클래스로도 생성 될 수 있습니다.
모든 구현 클래스 생성

SMSNotification.java
java

public class SMSNotification implements Notification {
@Override
public void notifyUser()
{
System.out.println( "Sending an SMS notification" );
}
}


EmailNotification.java
java

public class EmailNotification implements Notification {
@Override
public void notifyUser()
{
System.out.println( "Sending an e-mail notification" );
}
}



PushNotification.java
java

public class PushNotification implements Notification {
@Override
public void notifyUser()
{
System.out.println( "Sending a push notification" );
}
}



구체적인 클래스를 인스턴스화하는 팩토리 클래스 NotificationFactory.java를 작성하십시오.

이제 팩토리 클래스를 사용하여 몇 가지 정보를 전달하여 구체적인 클래스의 객체를 생성하고 가져옵니다.

java

public class NotificationService {
public static void main(String args)
{
NotificationFactory notificationFactory = new NotificationFactory();
Notification notification = notificationFactory.createNotification( "SMS" );
notification.notifyUser();
}
}



Output : Sending an SMS notification

실시간 예
이 디자인 패턴은
1과 같이 JDK에서 널리 사용되었습니다. java.util.Calendar, NumberFormat, ResourceBundle의 getInstance () 메소드는 팩토리 메소드 디자인 패턴을 사용합니다.
2. Java의 Integer, Boolean 등과 같은 모든 래퍼 클래스는이 패턴을 사용하여 valueOf () 메서드를 사용하여 값을 평가합니다.
3. java.nio.charset.Charset.forName (), java.sql.DriverManager # getConnection (), java.net.URL.openConnection (), java.lang.Class.newInstance (), java.lang.Class.forName ()은 팩토리 메서드 디자인 패턴이 사용 된 예입니다.
결론
지금까지 팩토리 메서드 디자인 패턴이 무엇이며 어떻게 구현하는지 배웠습니다. 이제 우리는이 디자인 메커니즘의 장점을 공정하게 이해했다고 생각합니다.

기사 태그 :

Articles
Previous Post

SC Picture Project (한국어)

Next Post

Dishonest Abe : 타이어 트레드 깊이를 확인하기 위해 페니 테스트를 사용해서는 안되는 이유

답글 남기기 답글 취소하기

최신 글

  • 2020 년 세계 최고의 사진 학교
  • 주권 시민이 반정부 철학을 도로로 가져옴
  • 치장 벽토 수리 비용 가이드
  • Muckrakers (한국어)
  • 정밀 종양학

보관함

  • 2021년 2월
  • 2021년 1월
  • 2020년 12월
  • 2020년 11월
  • 2020년 10월
  • 2020년 9월
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.