Singleton ומשתנה סטטי - ג'אווה - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

Singleton ומשתנה סטטי - ג'אווה


yk1

Recommended Posts

אם Singleton הוא בעצם משתנה שמוודא שתמיד ניגש לאותו מקום בזיכרון,

ומשתנה סטטי גם ניגש תמיד לאותו מקום -

אז מה ההבדל?

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

בשביל מה צריך את שניהם?

אשמח להסבר.

תודה!

קישור לתוכן
שתף באתרים אחרים

Singleton זו מחלקה שייתכן רק מופע אחד שלה.

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

MyClass x = new MyClass()

לעומת זאת, אם בנית את המחלקה כך שהיא סינגלטון, אז הקוד ()MyClass x = new MyClass לא יעבוד ואי אפשר יהיה ליצור מופעים של המחלקה - הדרך היחידה לקבל מופע של המחלקה הזו היא ע"י גישה לפונקציית הסינגלטון, דהיינו:

MyClass x = MyClass.getInstance()

כמובן, סינגלטון ו-static הולכים יד ביד, כי על מנת לממש סינגלטון יש צורך להשתמש ב-static.

קישור לתוכן
שתף באתרים אחרים

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

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

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

בכל מקרה תקרא על כל אחד מהם קצת באינטרנט ותבין את הבדלים.

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

והכי טוב תקרא את זה:

http://stackoverflow.com/questions/2765060/why-use-a-singleton-instead-of-static-methods

http://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern

קישור לתוכן
שתף באתרים אחרים

בכללי סינגלטון הוא ממש נוח לשימוש אבל חייבים להיזהר איתו כשיוצרים תלות מסוימת בין 2 סינגלטונים זה יכול לגרום לדדלוק DEADLOCK

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...