আমি একটি সংগ্রহস্থল বাস্তবায়ন করতে যাচ্ছি, এবং আমি ইউওউ প্যাটার্নটি ব্যবহার করতে চাই যেহেতু ভান্ডারটির গ্রাহক বেশ কয়েকটি ক্রিয়াকলাপ করতে পারেন, এবং আমি সেগুলি একবারে প্রতিশ্রুতিবদ্ধ করতে চাই।
বিষয়টি সম্পর্কে বেশ কয়েকটি নিবন্ধ পড়ার পরে, এখনও এই দুটি উপাদান কীভাবে সম্পর্কিত তা আমি পাই না, নিবন্ধের উপর নির্ভর করে এটি অন্যভাবে করা হচ্ছে।
কখনও কখনও UW সংগ্রহস্থলের অভ্যন্তরীণ কিছু হয়:
public class Repository
{
UnitOfWork _uow;
public Repository()
{
_uow = IoC.Get<UnitOfWork>();
}
public void Save(Entity e)
{
_uow.Track(e);
}
public void SubmittChanges()
{
SaveInStorage(_uow.GetChanges());
}
}
এবং কখনও কখনও এটি বাহ্যিক:
public class Repository
{
public void Save(Entity e, UnitOfWork uow)
{
uow.Track(e);
}
public void SubmittChanges(UnitOfWork uow)
{
SaveInStorage(uow.GetChanges());
}
}
অন্যান্য সময়, সেই ইউওউ হ'ল রেপোজিটরিটি উল্লেখ করে
public class UnitOfWork
{
Repository _repository;
public UnitOfWork(Repository repository)
{
_repository = repository;
}
public void Save(Entity e)
{
this.Track(e);
}
public void SubmittChanges()
{
_repository.Save(this.GetChanges());
}
}
এই দুটি উপাদান কীভাবে সম্পর্কিত? UW যে উপাদানগুলিকে পরিবর্তন করা প্রয়োজন তা অনুসরণ করে এবং এই পরিবর্তনগুলি বজায় রাখার জন্য সংগ্রহস্থলটিতে যুক্তি রয়েছে তবে ... কে কাকে ডাকে? শেষ কি আরও বোঝায়?
এছাড়াও, কে সংযোগ পরিচালনা করে? যদি সংগ্রহস্থলটিতে বেশ কয়েকটি অপারেশন করতে হয় তবে আমি মনে করি একই সংযোগ এবং এমনকি লেনদেন আরও বেশি কার্যকর, তাই সম্ভবত সংযোগের বস্তুটি ইউওউ-এর ভিতরে রাখে এবং এটি रिपোরিটরের অভ্যন্তরেও বোধগম্য হয়।
চিয়ার্স