Creative Saplings

GeeksforGeeks (日本語)

9月 29, 2020
No Comments

これは、オブジェクトの作成について説明する作成デザインパターンです。ファクトリデザインパターンは、インターフェイス(Javaインターフェイスまたは抽象クラス)を定義し、サブクラスにインスタンス化するオブジェクトを決定させることを示しています。インターフェイスのファクトリメソッドを使用すると、クラスはインスタンス化を1つ以上の具象サブクラスに延期できます。このデザインパターンはオブジェクトのインスタンス化について説明しているため、作成デザインパターンのカテゴリに分類されます。 Factoryメソッドという名前に気付いた場合、それはファクトリであるメソッドがあることを意味し、一般にファクトリは作成作業に関与しており、これを使用してオブジェクトが作成されています。これは、オブジェクト作成ロジックがクライアントに隠されているオブジェクトを作成するための最良の方法の1つです。それでは、実装を見てみましょう。

実装:
1。インターフェイス内でファクトリメソッドを定義します。
2。サブクラスに上記のファクトリメソッドを実装させ、作成するオブジェクトを決定させます。
Javaでは、コンストラクターはポリモーフィックではありませんが、サブクラスがオブジェクトを作成できるようにすることで、インスタンス化にポリモーフィックな動作を追加しています。つまり、サブクラスに何を作成するかを決定させることで疑似ポリモーフィズムを実現しようとしているため、このFactoryメソッドは

仮想コンストラクターとも呼ばれます。リアルタイムの問題といくつかのコーディング演習を使用して実装してみましょう。

問題の説明:
電子メール、SMS、およびプッシュ通知を介した通知サービスを実装することを検討してください。ファクトリメソッドデザインパターンを使用して、これを実装してみましょう。まず、このためのUMLクラス図を設計します。

上記のクラス図には、Notificationというインターフェイスがあり、3つの具体的なクラスがNotificationインターフェイスを実装しています。ファクトリクラスNotificationFactoryは、Notificationオブジェクトを取得するために作成されます。それでは、コーディングに取り掛かりましょう。

通知インターフェースの作成

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ピクチャープロジェクト

Next Post

不誠実な阿部:ペニーテストを使用してタイヤのトレッドの深さをチェックするべきではない理由

コメントを残す コメントをキャンセル

最近の投稿

  • 世界で最高の写真学校、2020年
  • ソブリン市民が反政府哲学を道路に持ち込む
  • スタッコ修理費用ガイド
  • マックレーカー
  • Precision Oncology (日本語)

アーカイブ

  • 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.