פּלאַן פּאַטערנז זענען ספּעציפיש נידעריק-מדרגה סאַלושאַנז צו ריקערינג פּראָבלעמס אין ווייכווארג פּלאַן.
פּלאַן פּאַטערנז זענען ריוזאַבאַל סאַלושאַנז וואָס קענען זיין געווענדט צו קייפל פּראַדזשעקס.
עסטימאַטעד לייענען צייט: 5 minuti
די הויפּט דיפעראַנסיז צווישן דיזיין פּאַטערנז און סאָליד פּרינסאַפּאַלז
- פּלאַן פּאַטערנז:
- ספּעציפיש סאַלושאַנז: דיזיין פּאַטערנז זענען ספּעציפיש, נידעריק-מדרגה סאַלושאַנז צו ריקערינג פּראָבלעמס אין ווייכווארג פּלאַן.
- ימפּלעמענטאַטיאָן דעטאַילס: צושטעלן באַטאָנען ימפּלאַמענטיישאַן גיידליינז פֿאַר סאַלווינג פּראָסט כייפעץ-אָריענטיד פּראָגראַממינג טשאַלאַנדזשיז.
- ביישפילן: עטלעכע באַוווסט פּלאַן פּאַטערנז אַרייַננעמען די סינגלעטאָן, פאַקטאָרי מעטאַד און אַדאַפּטער פּאַטערנז.
- זיכערקייַט: די פּלאַן פּאַטערנז זענען טעסטעד און וויידלי אנגענומען דורך די קהל, וואָס מאכט זיי זיכער צו נאָכפאָלגן.
- SOLID פּרינסאַפּאַלז:
- אַלגעמיינע גיידליינז: די SOLID פּרינסאַפּאַלז זענען הויך-מדרגה גיידליינז וואָס מיטטיילן גוט ווייכווארג פּלאַן.
- סקאַלאַבלע אַרקאַטעקטשער: זיי פאָקוס אויף סקאַלאַביליטי, מאַינטאַיאַביליטי און רידאַביליטי.
- ניט געבונדן צו שפּראַך: האַרט פּרינסאַפּאַלז זענען נישט געבונדן צו קיין ספּעציפיש פּראָגראַממינג שפּראַך.
- ביישפילן:
- איין רעספּאָנסיביליטי פּרינציפּ (SRP): א קלאַס זאָל האָבן בלויז איין סיבה צו טוישן.
- עפֿן / נאָענט פּרינציפּ (OCP): ווייכווארג ענטיטיז זאָל זיין אָפן פֿאַר פאַרלענגערונג אָבער פֿאַרמאַכט פֿאַר מאַדאַפאַקיישאַן.
- ליסקאָוו סאַבסטיטושאַן פּרינציפּ (LSP): סובטיפּעס מוזן זיין ריפּלייסאַבאַל מיט זייער באַזע טייפּס.
- Interface Segregation Principle (ISP): קלייאַנץ זאָל ניט זיין געצווונגען צו אָפענגען אויף ינטערפייסיז וואָס זיי טאָן ניט נוצן.
- אָפענגיקייַט ינווערזשאַן פּרינציפּ (דיפּ): הויך-מדרגה מאַדזשולז זאָל נישט אָפענגען אויף נידעריק-מדרגה מאַדזשולז; ביידע זאָל אָפענגען אויף אַבסטראַקציעס.
אין קיצער, פּלאַן פּאַטערנז פאָרשלאָגן ספּעציפיש סאַלושאַנז, בשעת SOLID פּרינסאַפּאַלז צושטעלן גענעראַל גיידליינז פֿאַר בעסער ווייכווארג פּלאַן
אַדוואַנטאַגעס פון ניצן דיזיין פּאַטערנז
- ריוזאַביליטי: דיזיין פּאַטערנז זענען ריוזאַבאַל סאַלושאַנז וואָס קענען זיין געווענדט צו קייפל פּראַדזשעקס. דורך ניצן געגרינדעט פּאַטערנז, דעוועלאָפּערס שפּאָרן צייט און מי, ווייַל זיי טאָן ניט דאַרפֿן צו ריינווענט די ראָד פֿאַר פּראָסט פּראָבלעמס.
- Defiנאַטיאָן פון אַרקאַטעקטשער: פּלאַן פּאַטערנז העלפן defiראַפינירן די אַרקאַטעקטשער פון די ווייכווארג סיסטעם. זיי צושטעלן אַ סטראַקטשערד צוגאַנג צו סאַלווינג ספּעציפיש פּלאַן טשאַלאַנדזשיז, ינשורינג קאָנסיסטענסי און מאַינטאַינאַביליטי.
- פלעססאַביליטי: טעמפּלאַטעס לאָזן בייגיקייט אין אַדאַפּטינג צו טשאַנגינג באדערפענישן. ווען נייַ פֿעיִקייטן אָדער ענדערונגען זענען דארף, דעוועלאָפּערס קענען מאָדיפיצירן אָדער פאַרברייטערן יגזיסטינג טעמפּלאַטעס אָן ברייקינג די גאנצע סיסטעם.
דיסאַדוואַנטידזשיז פון ניצן דיזיין פּאַטטערנס
- לערנען ויסבייג: פארשטאנד און אַפּלייינג פּלאַן פּאַטערנז ריקווייערז וויסן און דערפאַרונג. אָנהייבער דעוועלאָפּערס קען געפֿינען עס שווער צו פֿאַרשטיין די קאַנסעפּס און קלייַבן די רעכט מאָדעל פֿאַר אַ געגעבן פּראָבלעם.
- יבעריק נוצן: ווייל גרינג בנימצא פּלאַן פּאַטערנז קענען פירן צו די מיסקאַנסעפּשאַן אַז אַלע פּראָבלעמס קענען זיין סאַלווד מיט יגזיסטינג פּאַטערנז. יבעריק נוצן פון טעמפּלאַטעס קענען באַגרענעצן שעפֿערישקייט און שטערן די זוכן פֿאַר בעסער, מער ינאַווייטיוו סאַלושאַנז.
- קאַמפּלעקסיטי- עטלעכע פּלאַן פּאַטערנז פאָרשטעלן נאָך קאַמפּלעקסיטי אין די קאָד באַזע. דעוועלאָפּערס מוזן געפֿינען אַ וואָג צווישן ניצן פּאַטערנז יפעקטיוולי און מאַכן קאָד פאַרשטיייק.
אין קיצער, פּלאַן פּאַטערנז פאָרשלאָגן באַטייטיק אַדוואַנטידזשיז אין טערמינען פון ריוזאַביליטי, אַרקאַטעקטשער און בייגיקייַט, אָבער זייער נוצן זאָל זיין דזשודישאַס צו ויסמיידן ומנייטיק קאַמפּלעקסיטי און העכערן שעפֿערישקייט.
בייַשפּיל פון פּלאַן מוסטער אין לאַראַוועל: סינגלעטאָן
די סינגלעטאָן פּלאַן מוסטער ינשורז אַז אַ קלאַס האט בלויז איין בייַשפּיל און גיט אַ איין פונט פון פּאָזיציע. אין Laravel, דעם מאָדעל איז אָפט געניצט צו פירן רעסורסן אַזאַ ווי דאַטאַבייס קאַנעקשאַנז אָדער קאַנפיגיעריישאַן סעטטינגס.
דאָ איז אַ יקערדיק ביישפּיל פון ימפּלאַמענטיישאַן פון Singleton מוסטער אין PHP:
<?פפּ
קלאַס סינגלעטאָן {
פּריוואַט סטאַטיק $ בייַשפּיל = נאַל;
פּריוואַט פֿונקציע __קאַנסטראַקט () {
// פּריוואַט קאַנסטראַקטער צו פאַרמייַדן דירעקט ינסטאַנטיישאַן
}
ציבור סטאַטיק פֿונקציע getInstance (): זיך {
אויב (נול === זיך:: $ בייַשפּיל) {
זיך:: $ בייַשפּיל = נייַ זיך ();
}
צוריקקומען זיך::$ בייַשפּיל;
}
// אנדערע מעטהאָדס און פּראָפּערטיעס קענען זיין מוסיף דאָ
}
// באַניץ:
$סינגלעטאָןינסטאַנסע = סינגלעטאָן::געטינסטאַנסע();
// איצט איר האָבן אַ איין בייַשפּיל פון די Singleton קלאַס
// בייַשפּיל באַניץ אין לאַראַוועל:
$ דאַטאַבייס = דב :: קשר ('מיסקל');
// צוריקקריגן אַ דייטאַבייס פֿאַרבינדונג בייַשפּיל (סינגלעטאָן)
אין די מוסטער קאָד:
- די סינגלעטאָן קלאַס האט אַ פּריוואַט קאַנסטראַקטער צו פאַרמייַדן דירעקט ינסטאַנטיישאַן;
- דער getInstance () אופֿן געראַנטיז אַז בלויז איין בייַשפּיל פון די קלאַס יגזיסץ;
- איר קענען לייגן אנדערע מעטהאָדס און פּראָפּערטיעס צו די Singleton קלאַס ווי דארף;
די לאַראַוועל סערוויס קאַנטיינער אויך ניצט די Singleton מוסטער צו פירן קלאַס דיפּענדאַנסיז און דורכפירן אָפענגיקייַט ינדזשעקשאַן. אויב איר אַרבעט אין Laravel, באַטראַכטן ניצן זייַן דינסט קאַנטיינער און רעדזשיסטערינג דיין קלאַס מיט אַ סערוויס שפּייַזער פֿאַר מער אַוואַנסירטע נוצן קאַסעס.
Ercole Palmeri