PDA

View Full Version : سوال: ایجاد یک نمونه از یک کلاس به تعداد متعدد یا فقط یکی؟



رامین مرادی
سه شنبه 25 مهر 1396, 11:16 صبح
وقت بخیر دوستان
من روش کد نویسیم اینجوریه که وقتی به یک شی نیاز دارم اونو موقع نیاز یه نمونه میسازم و استفاده میکنم. به نظرتون کارم درسته یا نه؟
اگه مثلا ده بار تو یک فرم یا کلاس از یه کلاس دیگه نمونه بسازم بهتره با روش خودم اینکارو بکنم یا اینکه یه بار به صورت عمومی یک نمونه از اون کلاس رو بسازم و از اون استفاده کنم؟

ali_md110
سه شنبه 25 مهر 1396, 12:19 عصر
مباحث DI یا تزریق وابستگی رو مطالعه کنید بهمراه وهله سازی با تاخیر یا Lazy
یعنی زمانیکه برنامه به یک وهله از شی نیاز داشت بصورت خودکار یک شی وهله سازی شده در اختیار برنامه قرار گیرد

رامین مرادی
سه شنبه 25 مهر 1396, 13:45 عصر
مباحث DI یا تزریق وابستگی رو مطالعه کنید بهمراه وهله سازی با تاخیر یا Lazy
یعنی زمانیکه برنامه به یک وهله از شی نیاز داشت بصورت خودکار یک شی وهله سازی شده در اختیار برنامه قرار گیرد
خیلی کلی گفتین :لبخند:
سرچ زدم اما بیشتر گنگ شدم.

شایدم شما سوال منو متوجه نشدین. اگه نیازه یه نمونه کد بزارم

ali_md110
سه شنبه 25 مهر 1396, 16:12 عصر
من منظور شما رو خوب متوجه شدم به همین دلیل گفتم برو سراغ DI
Dependency injection یا DIمیگه که نیازمندیهای یک کلاس جوری بهش تحویل بدهیم که خود کلاس هم متوجه نشه
وقتی یک کلاس داریم بنام A
و توی این کلاس میخایم یک شی دیگر از کلاس B وهله سازی کنیم مینویسیم


var b= new B()

با این روش جواب میگیریم ولی کلاس A را وابسته به B کرده ایم و هرجا در کلاس A به کلاس B نیاز داشتیم باید وهله سازی کنیم
برای رهایی از این وهله سازی های متعدد از الگوی Dependency injection به همراه یک IOC مثل Autofact یا StractureMap بهره میگیریم
و نیازهای یک کلاس مثل A را در سطحی بالاتر آماده سازی میکنیم و هر زمان کلاس A نیاز به منبعی خارج از خودش داشت
IOC هوشمند متوجه خواهد شد و در اختیار او قرار خواهد داد
در ضمن مباحث الگوی سینگلتون هم مطالعه بکنید

رامین مرادی
چهارشنبه 26 مهر 1396, 10:50 صبح
ممنون .

یه نمونه هم گذاشتم کد های فرم 1 رو با فرم 2 مقایسه کنید.

ali_md110
چهارشنبه 26 مهر 1396, 13:45 عصر
پروژه شما رو دیدم
یک کلاس بنام my class دارید و از متدهاش استفاده می کنید
من باید چی رو مقایسه کنم؟
در ضمن


MainClass _MainClass = new MainClass(پارامترها);

ممکنه یک سری پارامتر ورودی در سازندش داشته باشه اونوقت باید چی کار کرد؟
---------------------------------------------------
منظورم از IOC یا واگذاری مسوولیت همینه که اگر یک کلاس سازنده داشته باشه و یک سرزی نیازمندیهای دیگه برنامه بتونه فورن بدون وهله سازی دستی اون منابع رو در اختیارش قرار بگذاره
مثال زیر یک نگاه بکنید سوالی بود بپرسید
http://www.c-sharpcorner.com/UploadFile/4d9083/dependency-injection-using-simple-injector/

(http://www.c-sharpcorner.com/UploadFile/4d9083/dependency-injection-using-simple-injector/)