PDA

View Full Version : نمونه سازی در صورت عدم وجود نمونه



resident
پنج شنبه 07 شهریور 1392, 17:18 عصر
به نظر شما گذاشتن کدی مثل کد زیر جاهایی که میخواین نمونه سازی کنیم و در تمام قسمتهای کلاس ازش استفاده کنیم چطوره؟


private CityRepository _cityRepo ;

protected override CityRepository RepositoryObject
{
get { return _cityRepo ?? (_cityRepo = new CityRepository ()); }
}


اول کلاس اینو بنویسیم و همه جا به جای cityRepo از RepositoryObject استفاده کنیم.
برای برنامه احیانا مشکلی ایجاد نمی کنه؟ آیا اصلا این کار خوبه یا اینکه فرقی با نمونه سازی عادی نداره؟

plus
پنج شنبه 07 شهریور 1392, 19:11 عصر
Lazy Loading اگه درست استفاده بشه میتونه مفید باشه.ولی کلی نمیشه در موردش نظر داد و بسته به شرایط استفاده داره.معمولا در ORM ها استفاده میشه...

resident
پنج شنبه 07 شهریور 1392, 19:44 عصر
Lazy Loading اگه درست استفاده بشه میتونه مفید باشه.ولی کلی نمیشه در موردش نظر داد و بسته به شرایط استفاده داره.
ممنون که وقت گذاشتید....
لطف می کنید یه مقدار در موردش توضیح بدید؟

mehdi.mousavi
پنج شنبه 07 شهریور 1392, 20:18 عصر
به نظر شما گذاشتن کدی مثل کد زیر جاهایی که میخواین نمونه سازی کنیم و در تمام قسمتهای کلاس ازش استفاده کنیم چطوره؟

سلام.
من دقیقا نمیدونم هدفتون چیه، Lazy Loading یا داشتن کلاسی Singleton. یعنی آیا شما مایلید


Object مورد نظر آخرین لحظه که بهش نیاز هستش Load بشه؟ یا
همواره فقط یک Instance از کلاس مورد نظرتون ایجاد بشه و به استفاده کننده برگرده؟

پاسخ شما هر یک از دو مورد فوق باشه، کدی که نوشته اید چندان کارا نیست. چون معلوم نیست آیا قراره این کد Thread Safe باشه یا خیر و سوالات متنوع دیگه...
بنابراین لطفا ابتدا به سوالم پاسخ بدید تا بیشتر در این مورد صحبت کنیم.


موفق باشید.

resident
جمعه 08 شهریور 1392, 08:10 صبح
سلام.
من دقیقا نمیدونم هدفتون چیه، Lazy Loading یا داشتن کلاسی Singleton. یعنی آیا شما مایلید

Object مورد نظر آخرین لحظه که بهش نیاز هستش Load بشه؟ یا
همواره فقط یک Instance از کلاس مورد نظرتون ایجاد بشه و به استفاده کننده برگرده؟


پاسخ شما هر یک از دو مورد فوق باشه، کدی که نوشته اید چندان کارا نیست. چون معلوم نیست آیا قراره این کد Thread Safe باشه یا خیر و سوالات متنوع دیگه...
بنابراین لطفا ابتدا به سوالم پاسخ بدید تا بیشتر در این مورد صحبت کنیم.

موفق باشید.

هیچ یک از مواردی که شما فرمودید دلیل انجام این کار نبود.
من تو Repository یه کلاس به نام BaseRepository دارم که بقیه کلاسها از اون ارث بری می کنند. شبیه زیر:



public abstract class BaseRepository
{
protected int userID;

protected abstract BaseBusiness BusinessObject{get;}

//Get userID

public void Insert(BaseEntity entity)
{
BusinessObject.Insert(entity, userID);
}

public void Update(BaseEntity entity)
{
BusinessObject.Update(entity, userID);

}

.

.

.

{
public class ProvinceRepository : BaseRepository
{
private ProvinceBusiness _provinceBo;

protected override BaseBusiness BusinessObject
{
get { return _provinceBo ?? (_provinceBo = new ProvinceBusiness()); }
}

public List<Province> SelectAll(string SelectedColumns = "ProvinceID,Province_Title", string condition = "", string orderBy = "Province_Title", SortOrder sortorder = SortOrder.Assending)
{
return BusinessObject.GetSelectQuery(SelectedColumns, condition, orderBy, sortorder, userID).Cast<Province>().ToList();
}


public List<Province> SelectPaging( string condition, string orderBy, SortOrder sortorder, int pageNumberDesired, int rowCountOnPage, out int pageCount)
{
string SelectedColumns="[ProvinceID],[Province_Title],[Province_ConcurrencyVersion]";
return BusinessObject.GetPagingQuery(SelectedColumns, condition, orderBy, sortorder, pageNumberDesired, rowCountOnPage, out pageCount, userID).Cast<Province>().ToList();
}
.
.
.
}

BaseBusiness در کلاس BaseRepository، کلاس Parent در لایه Business است. در کلاسهای ارث بری کرده از BaseRepository هم اومدم و نمونه ساختم و....
برای این که بتونم این قسمت رو پیاده سازی کنم مجبور شدم به این طریق کدنویسی کنم.

resident
شنبه 09 شهریور 1392, 14:46 عصر
سلام.
من دقیقا نمیدونم هدفتون چیه، Lazy Loading یا داشتن کلاسی Singleton. یعنی آیا شما مایلید



Object مورد نظر آخرین لحظه که بهش نیاز هستش Load بشه؟ یا
همواره فقط یک Instance از کلاس مورد نظرتون ایجاد بشه و به استفاده کننده برگرده؟


پاسخ شما هر یک از دو مورد فوق باشه، کدی که نوشته اید چندان کارا نیست. چون معلوم نیست آیا قراره این کد Thread Safe باشه یا خیر و سوالات متنوع دیگه...
بنابراین لطفا ابتدا به سوالم پاسخ بدید تا بیشتر در این مورد صحبت کنیم.


موفق باشید.

یکی از دلایلم هم 2امین موردیه که شما فرمودید............