বলুন আমাদের কাছে টাস্ক সত্তাগুলির একটি তালিকা এবং একটি ProjectTaskউপ ধরণের রয়েছে। টাস্কগুলি যে কোনও সময় বন্ধ করা যেতে পারে, ProjectTasksযা একবার স্টার্ট স্ট্যাটাস পরে বন্ধ করা যায় না। ইউআইয়ের উচিত এটি নিশ্চিত করা উচিত যে কোনও প্রারম্ভিক বন্ধ করার বিকল্পটি ProjectTaskকখনই উপলভ্য নয়, তবে কিছু সুরক্ষার ব্যবস্থা ডোমেনে উপস্থিত রয়েছে:
public class Task
{
public Status Status { get; set; }
public virtual void Close()
{
Status = Status.Closed;
}
}
public class ProjectTask : Task
{
public override void Close()
{
if (Status == Status.Started)
throw new Exception("Cannot close a started Project Task");
base.Close();
}
}
এখন যখন Close()কোনও টাস্কে কল করার সময় , কলটি ব্যর্থ হয়ে যাওয়ার সম্ভাবনা রয়েছে যদি এটি ProjectTaskশুরু করা স্থিতি সহ হয়, যখন এটি বেস বেস কোনও টাস্ক না হয়। তবে এটি ব্যবসায়ের প্রয়োজনীয়তা। এটা ব্যর্থ হওয়া উচিত। এটিকে কি লিসকভের প্রতিস্থাপন নীতি লঙ্ঘন হিসাবে বিবেচনা করা যেতে পারে ?
public Status Status { get; private set; }:; অন্যথায় Close()পদ্ধতি প্রায় কাজ করা যেতে পারে।
Taskবহুবর্ষীয় কোডে উদ্ভট অসুবিধাগুলি প্রবর্তন করবেন না যা কেবলমাত্র Taskএটি সম্পর্কে জানে এটি একটি বড় ব্যাপার। এলএসপি কোনও কৌতুক নয়, তবে বৃহত সিস্টেমে রক্ষণাবেক্ষণে সহায়তা করার জন্য যথাযথভাবে চালু হয়েছিল।
TaskCloserপ্রক্রিয়া আছে closesAllTasks(tasks)। এই প্রক্রিয়াটি অবশ্যই ব্যতিক্রমগুলি ধরার চেষ্টা করে না; সর্বোপরি, এটি এর সুস্পষ্ট চুক্তির অংশ নয় Task.Close()। এখন আপনি পরিচয় করিয়ে দেন ProjectTaskএবং হঠাৎ আপনার TaskCloserব্যতিক্রমগুলি ছোঁড়া শুরু করে (সম্ভবত অবিবাহিত)। এটা বড় কথা!