כימיקלים ודגום; חומרים הנדסה
כיצד להשתמש בתבנית Factory כדי לשפר את ההתאמה במערכות עיבוד נתונים הנדסי
Table of Contents
מבוא
מערכות עיבוד נתונים הנדסה חייבות להתמודד עם מגוון גדל והולך של פורמטים קלט - מקבצי CSV ו- JSON ועד ל-Schemas מיוחדים המשמשים ב- CAD, סימולציה, ו-IoT חיישן זרמי יכולת עמידה על פורמטים אלה ללא כתיבת לוגיקה הליבה הוא אתגר מתמשך.תבנית החרושת מציעה פתרון מובנה: היא מבססת אובייקטים יצירת מאחורי ממשק משותף, ניתנותנותנות משנה אשר מחליט על ידי שיטות פעולה ישירות לתהליכים אלה, כמו Cworld, כמו גם שיטות עיבוד נתונים.
הבנת שיטת המפעל
תבנית שיטת המפעל היא דפוס עיצוב בריא מן האנג' של ארבעה. הרעיון המרכזי שלה הוא להגדיר ממשק או מחלקה מופשטת ליצירת אובייקט, אבל לאפשר תת-classes לשנות את סוג האובייקטים שייצרו.זה מקדם את העיקרון הפתוח/סגור: מערכת פתוחה להרחבה (סוגים חדשים של מוצר) אך סגורה לשינוי (קוד מתפתח נשאר ללא שינוי).
במונחים של דיאגרמות הכיתה, התבנית כוללת:
- (FLT:0) ייצור פלאופול 1) - ממשק או מחלקה מופשטת המגדירה את הפעולות שכל המוצרים קונקרטיים חייבים ליישם.
- (ב) ,0) ייצור המוצר (FLT:1) - יישום ספציפי של ממשק המוצר.
- (ב) שיעור מופשט המכריז על שיטת המפעל (בדרך כלל FLT:0) היוצר עשוי לכלול גם לוגיקה עסקית המכנה את שיטת המפעל.
- (ב) ⁇ :0) ,ConcreteCreatorFLT:1 - תת-הקבוצות אשר אסרו על שיטת המפעל להחזיר מקרים של מוצרים קונקרטיים.
הפרדה זו של יצירת לוגיקה מלוגיקה עסקית היא מה שעושה את התבנית כל כך חזקה צינורות עיבוד נתונים.
מדוע עיבוד נתונים הנדסי צריך מפעל
צוותי הנדסה עובדים לעתים קרובות עם פורמטי נתונים הטרוגניים.מערכת אחת עשויה להיות צריכה:
- סימולציה Parse פלט קבצים ב HDF5, CSV, ופורמטים בינאריים קנייניים.
- קרא נתוני תצורה מ- XML, YAML, או משתנים סביבתיים.
- לייבא מודלים של CAD מ- STEP, IGES, או פורמטי תוכנה מקומיים.
- ● קובצי נתוני חיישן בזמן אמת באמצעות MQTT, זרמי HTTP, או WebSockets.
ללא תבנית עיצוב, מפתחים עשויים להמלט את בסיס הקוד עם 1FLT או (FLT:2 הצהרות לבחור את הקורא הנכון.זה הופך את המערכת לערעור - קידוד פורמט חדש דורש שינוי ענפים מותניים אלה, הגדלת הסיכוי של באגים.תבנית המפעל מעבירה את הבחירה לתוך תת-מעמד ייעודי, כך הוספת פורמט חדש וחדשני חדש למוצר קונקרטי חדש, אשר משאיר קוד קיים.
שלב-בי-Step Implementation
בואו לעבור יישום מעשי בסגנון שפה-אגנוסטי (הלוגיקה דומה חלת על Java, C#, TypeScript, Python, או PHP).
שלב 1: Define the Product Interface
צור ממשק שכל קוראי הנתונים יהטמיעו.ממשק זה מגדיר שיטות לקריאה ואולי יהפוך מידע.
interface DataReader {
void readData();
List<Record> getRecords();
}
שלב 2: יצירת הטמעה
ליישם את הממשק עבור כל פורמט נתמך.
class CSVReader implements DataReader {
// … constructor, parsing logic …
public void readData() { … }
public List<Record> getRecords() { … }
}
class JSONReader implements DataReader {
// … similar …
}
שלב 3: Define the Creator with a Factory Method
מעמד היוצר המופשט מצהיר על שיטת המפעל.זה יכול גם להכיל לוגיקה לעיבוד נפוצה המשתמשת במוצר.
abstract class DataReaderFactory {
// Factory method
abstract DataReader createReader();
// Template method that uses the product
public List<Record> processData() {
DataReader reader = createReader();
reader.readData();
return reader.getRecords();
}
}
שלב 4: יישום גורמי לוחמה
כל תת-קבוצה מעצימה את שיטת המפעל כדי להחזיר קורא ספציפי.
class CSVReaderFactory extends DataReaderFactory {
@Override
DataReader createReader() {
return new CSVReader("input.csv");
}
}
class JSONReaderFactory extends DataReaderFactory {
@Override
DataReader createReader() {
return new JSONReader("input.json");
}
}
כעת, קוד הלקוח יכול לעבוד עם המפעל המופשט ולבחור את המפעל הקונקרט המתאים המבוסס על תצורה או תנאי זמן ריצה:
DataReaderFactory factory = getFactoryFromConfig(); // e.g., returns CSVReaderFactory
List<Record> records = factory.processData();
הלקוח לעולם לא יפנה ישירות ל-FLT:8 או (FLT:9) - הוא רק אינטראקציה עם המפעל מופשט ואת ממשק המוצר.
הוספת פורמט חדש
נניח שעלינו לתמוך ב-XML, עלינו ליצור רק:
- (ב) .
- [01: 51]
אין צורך בשינויי קוד אחרים.תבנית שיטת המפעל הופכת את המערכת למאוד בלתי אפשרית.
יישום אמיתי בעולם בהנדסה
דפוס שיטת החרושת הוא ubiquitous בתוכנות הנדסה.כאן כמה דוגמאות קונקרטיות:
ייבוא קבצים
יישום CAD חייב לקרוא גיאומטריה מ STEP (AP203/AP214), IGES, ופורמטים ספציפיים של הספק כמו SolidWorks SLDPRT. לכל פורמט יש ⁇ שונה לחלוטין.השיטה במפעל מאפשר יישום לקבוע את יבוא הנכון מבוסס על הרחבה הקובץ או בחירת משתמש.יתר היישום פועל עם ייצוג גיאומטרי מאוחדת.
חיישן Data Aggregation
פלטפורמה של IoT אוספת טלמטה מהמכשירים המשתמשים ב- MQTT, CoAP, HTTP POST, ופרוטוקולים בינאריים קנייניים.תבנית מפעל יוצרת מטפלים פרוטוקולים מתאימים, ומאפשרת למנוע הצלקות בנתונים לטפל בכל הנתונים הנכנסים באופן אחיד.
בימוי ו- CMS ללא ראש
(FLT:0)DirectusveFLT:1) הוא CMS פופולרי ללא ראש אשר מנהל תוכן ממקורות רבים - בסיסי נתונים, העלאה קבצים, נקודות קצה API, וחנויות נתונים מותאמות אישית. בעוד Directus עצמו בנוי על פילוסופיה ארכיטקטונית שונה, דפוס המפעל יכול להיות מיושם כאשר מרחיבים את צינורות עיבוד הנתונים שלה.לדוגמה, הרחבות יכולות להשתמש במפעל כדי ליצור "נתונים" שונים כי הם מתאימים לשילוב קוד פתוח של מערכות מידע מתקדמות אחרות.
היתרונות של שיטת המפעל
- (FLT:0) פתוח להרחבה, סגורה לשינוי: 1) - ניתן לתמוך בתבניות נתונים חדשות על ידי הוספת שיעורים חדשים, לא על ידי עריכה של קיימים.
- (FLT:0) Code ReuseveFLT:1 - לוגיקה עיבוד נפוצה בכיתה היוצר (למשל, טיפול בשגיאות, logging, צ'נג) משותף על פני כל קוראי בטון.
- (FLT:0) ,TestabilityFLT:1 - שיטת המפעל ניתן לספוג יתר על המידה במבחנים יחידה כדי להזריק קוראים ללעג, המאפשרים בדיקות מבודדות של ההיגיון העסקי מבלי לגעת במקורות נתונים אמיתיים.
- (ב) ,0) ,DecouplingFLT:1 - קוד הלקוח תלוי רק בפשטות (ראה פרק 12, FLT:13), מה שהופך אותו להכרחי לשינויים בביצועים קונקרטיים.
- (ב) 1 (ב) כל יוצר ומוצר קונקרטי מתמקדים בתבנית אחת, לציית לעיקרון האחריות היחיד.
ההליכים הטובים ביותר והמלכודות הנפוצות
מתי להשתמש בשיטת המפעל
השתמש בתבנית זו כאשר:
- אתה לא יודע מראש באיזה שיעור מדויק של התנגדות המערכת שלך תצטרך.
- אתה רוצה לספק מחרוזת כדי להרחיב את יצירת האובייקט.
- אתה רוצה להשתמש בחפצים קיימים או ליישם צ'ינג במקום ליצור מקרים חדשים בכל פעם (שיטה במפעל יכולה להחזיר חפץ מוכנס או יחידן).
מתי להימנע מOvercomplication
אם יש לך רק מוצר אחד או לוגיקה הבחירה הוא טריוויאלי (למשל, תמיד אותו קורא), שיטת מפעל מוסיפה מורכבות מיותרת.במקרים אלה, בונה פשוט או שיטת מפעל סטטי (עם לא תת-מעמד) יכול להיות מספיק.
שילוב עם תבניות אחרות
שיטת המפעל עובדת לעתים קרובות ביד עם FLT:0StrategyFLT (לעבור אלגוריתמים) ו-FLT:2 ®Template MethodphFLT 3: (להגדרת השלד של אלגוריתם תוך כדי פיזור כמה שלבים ל- subclasses). בעיבוד נתונים, הבורא יכול לשמש כשיטת תבנית, הנקראת את השיטה בתוך תהליך גדול יותר.
מסקנה
דפוס שיטת החרושת הוא דרך מוכחת לבנות מערכות עיבוד נתונים גמישות, תחזוקה. על ידי ניצול יצירת אובייקטים, הוא מקלקל את "מה" מה "איך", ומאפשר לצוותים לתמוך בתבניות נתונים חדשות ומקורות ללא לוגיקה קיימת קיימת.אם אתה בונה יבוא מיידי, צינור IoT, או מרחיב CMS חסר ראש כמו Directus, דפוס זה מספק ארכיטקטורה נקייה עם דרישות ברורות של הפעלת מערכת ההפעלה שלך הוא יישום מיידי של פורמט זה, מאפשר לך להגדיר מערכת ההפעלה.
לקריאה נוספת על תבנית שיטת המפעל, לבדוק את ה-FLT:0 (הסברים של גורו) 1 ואת המקורי FLT:2Gang של ארבעה ספריותFLT 3:0 עבור יישום בעולם האמיתי בהנדסה נתונים, ה-FLT:4patterns של Enterprise Application ArchitectureFLT:5 על ידי מרטין Fowler מומלץ גם כן.