design patterns - Decorator

nocgod

New member
נכון

אבל אני תמיד חושב על זה ככה:
אם אתה לא רואה את הקוד מקור של המחלקה שאתה רוצה לעטוף, אתה עדיין יכול לעשות לה ex method
אם אתה בזמן כתיבת הקוד שלך יודע שאתה צריך decorator a, decorator b decorator c אז פשוט תכתוב את כל המטודות של הdecorators בתור ex methods ובגדול תקבל אותה תוצאה בלי בתחלס לעשות הורשות הבעיה היחידה אולי שתהיה עם זה שאתה תמיד תחשוף יותר דברים ממה שאתה בפועל רוצה.
 
אני חושב שאתה מפספס את הרעיון

1. EM נותן לך הרחבת פונקציונליות בזמן build.
decorator נותן לך הרחבת פונקציונליות בזמן ריצה, כך שניתן לבחור איזו פונקציונליות רוצים אחרי ה build.
2. מעבר לזה, EM זה רק מעטפת למתודות סטטיות לחלוטין, ורק נותן תחושה כאילו אנחנו עובדים מול instance קונקרטי.
3. ב EM אפשר "להרחיב" טיפוס רק פעם אחת. אם אתה צריך, נניח, הרחבת הצפנה ומעליה הרחבת דחיסה - אאל"ט לא ניתן לעשות את זה ב EM (וגם אם כן, מדובר בירידה משמעותית של קריאות הקוד).
4. לחשוף יותר ממה שהייתי רוצה זה לא עניין שולי.
5. בכל מקרה, אני מעדיף לעבוד מול ממשקים ("חוזים") ופחות מול מחלקות קונקרטיות. ולמרות שאפשר ליצור EM לממשק, אני ממש לא ממליץ על זה.
 
ובנוסף יש את עניין ה state

אם צריך state, אז ל EM יש state סטטי בלבד.
ה state של decorator הוא ברמת ה instance עצמו.
 
למעלה