יצירת שעועית אביבית באמצעות שיטות מפעל

1. הקדמה

שיטות מפעל יכולות להיות טכניקה שימושית להסתרת לוגיקת יצירה מורכבת בתוך שיחת שיטה אחת.

אמנם אנו בדרך כלל יוצרים שעועית באביב באמצעות קונסטרוקטור או הזרקת שדה, אנו יכולים גם ליצור שעועית קפיצית בשיטות מפעל.

במדריך זה נעסוק ביצירת שעועית אביב בשתי מופעים ושיטות מפעל סטטיות.

2. שיטת מפעל המופע

יישום סטנדרטי של דפוס שיטת המפעל הוא יצירת שיטת מופע שמחזירה את השעועית הרצויה.

בנוסף, אנו יכולים להגדיר את אביב כך שייעשה את השעועית הרצויה שלנו עם או בלי ויכוחים.

2.1. בלי ויכוחים

אנחנו יכולים ליצור פו מעמד המייצג את יצירת השעועית שלנו:

כיתה ציבורית Foo {}

לאחר מכן, אנו יוצרים InstanceFooFactory מחלקה הכוללת שיטת מפעל, createInstance, שיוצר את שלנו פו אפונה:

class class InstanceFooFactory {public Foo createInstance () {להחזיר Foo חדש (); }}

לאחר מכן, אנו מגדירים את האביב:

  1. צור שעועית למחלקת המפעל שלנו (InstanceFooFactory)
  2. להשתמש ב מפעל שעועית תכונה להפניה לשעועית המפעל שלנו
  3. להשתמש ב שיטת מפעל תכונה להפניה לשיטת המפעל שלנו (createInstance)

אם אנו מיישמים זאת בתצורת XML של אביב, בסופו של דבר:

לבסוף, אנו חוטים אוטומטית את הרצוי שלנו פו אפונה. האביב ייצור את השעועית שלנו באמצעות שלנו createInstance שיטת מפעל:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration ("/ factorymethod / instance-config.xml") מעמד ציבורי InstanceFooFactoryIntegrationTest {@ Foo foo פרטית אוטומטית; @Test public void givenValidInstanceFactoryConfig_whenCreateFooInstance_thenInstanceIsNotNull () {assertNotNull (foo); }}

2.2. עם ויכוחים

אנו יכולים גם לספק טיעונים לשיטת המפעל למשל שלנו באמצעות בונה-ארג אֵלֵמֶנט בתצורת האביב שלנו.

ראשית, אנו יוצרים כיתה, בָּר, המשתמשת בטיעון:

בר בכיתה ציבורית {שם מחרוזת פרטי; סרגל ציבורי (שם מחרוזת) {this.name = שם; } // ... גטרים וקובעים}

לאחר מכן, אנו יוצרים מחלקת מפעל למשל, InstanceBarFactory, בשיטת מפעל המקבלת טיעון ומחזירה a בָּר אפונה:

class class InstanceBarFactory {public bar createInstance (שם מחרוזת) {להחזיר סרגל חדש (שם); }}

לבסוף, אנו מוסיפים א בונה-ארג אלמנט שלנו בָּר הגדרת שעועית:

לאחר מכן נוכל לחווט אוטומטית את שלנו בָּר שעועית באותו אופן כמו שעשינו למען שלנו פו אפונה:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration ("/ factorymethod / instance-bar-config.xml") ציבור ציבורי InstanceBarFactoryIntegrationTest {@ מופע בר פרטי פרטי מאושר; @Test הציבור בטל givenValidInstanceFactoryConfig_whenCreateInstance_thenNameIsCorrect () {assertNotNull (מופע); assertEquals ("someName", instance.getName ()); }}

3. שיטת מפעל סטטית

אנו יכולים גם להגדיר את האביב כך שישתמש בשיטה סטטית כשיטת מפעל.

אמנם יש להעדיף שיטות מפעל למשל, אך טכניקה זו יכולה להיות שימושית אם יש לנו שיטות סטטיות ישנות ומורשות המייצרות שעועית רצויה. לדוגמא, אם שיטת מפעל מחזירה סינגלטון, אנו יכולים להגדיר את Spring לשימוש בשיטת מפעל זו של סינגלטון.

בדומה לשיטות מפעל למשל, אנו יכולים להגדיר שיטות סטטיות עם ובלי ויכוחים.

3.1. בלי ויכוחים

באמצעות שלנו פו בכיתה כשעועית הרצויה לנו, אנו יכולים ליצור מחלקה, SingletonFooFactory, הכולל א createInstance שיטת מפעל המחזירה מופע יחיד של פו:

כיתה ציבורית SingletonFooFactory {גמר סטטי פרטי פרטי Foo INSTANCE = Foo חדש); Foo סטטי ציבורי createInstance () {return INSTANCE; }}

הפעם, אנחנו רק צריכים ליצור שעועית אחת. שעועית זו דורשת שתי תכונות בלבד:

  1. מעמד - מצהיר על מעמד המפעל שלנו (SingletonFooFactory)
  2. שיטת מפעל - מצהיר על שיטת המפעל הסטטית (createInstance)

אם אנו מיישמים זאת על תצורת ה- XML ​​של אביב, אנו מקבלים:

לבסוף, אנו חוטים אוטומטית את שלנו פו שעועית המשתמשת באותו מבנה כמו קודם:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration ("/ factorymethod / static-foo-config.xml") מחלקה ציבורית SingletonFooFactoryIntegrationTest {@ Singleton Foo פרטית אוטומטית; @Test public void givenValidStaticFactoryConfig_whenCreateInstance_thenInstanceIsNotNull () {assertNotNull (singleton); }}

3.2. עם ויכוחים

בזמן עלינו להימנע משינוי מצב האובייקטים הסטטיים - כמו הסינגל שלנו - במידת האפשראנו עדיין יכולים להעביר טיעונים לשיטת המפעל הסטטית שלנו.

לשם כך אנו יוצרים שיטת מפעל חדשה המקבלת את הטיעונים הרצויים שלנו:

כיתה ציבורית SingletonBarFactory {גמר פרטי סטטי פרטי INSTANCE = סרגל חדש ("ללא שם"); סרגל סטטי ציבורי createInstance (שם מחרוזת) {INSTANCE.setName (שם); להחזיר INSTANCE; }}

לאחר מכן, אנו מגדירים את האביב להעביר את הטיעון הרצוי באמצעות ה- בונה-ארג אֵלֵמֶנט:

לבסוף, אנו חוטים אוטומטית את שלנו בָּר שעועית המשתמשת באותו מבנה כמו קודם:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration ("/ factorymethod / static-bar-config.xml") מעמד ציבורי SingletonBarFactoryIntegrationTest {@ מופע בר פרטי פרטי מאושר; @Test הציבור בטל givenValidStaticFactoryConfig_whenCreateInstance_thenNameIsCorrect () {assertNotNull (מופע); assertEquals ("someName", instance.getName ()); }}

4. מסקנה

במאמר זה בדקנו כיצד להגדיר את Spring לשימוש בשיטות מופע וסטטיות של מפעל - גם בלי ויכוחים.

בעוד שכינון שעועית באמצעות הזרקת קונסטרוקטור ושדה נפוץ יותר, שיטות המפעל יכולות להיות שימושיות לצעדים מורכבים של יצירה וקוד מדור קודם.

את הקוד המשמש במאמר זה ניתן למצוא באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found