好吧,在我正在创建的应用程序中,我希望有一个调度程序来保存有关传入作业的数据以及执行它们的剩余时间,因此我创建了一个非常幼稚的实现,我认为它远非应有的样子。
执行
接口
public interface IQueue
{
string Name { get; set; }
int Priority { get; set; }
}
课程
public class TaskScheduler : Queue, IQueue
{
public string Name { get; set; }
public int Priority { get; set; }
public TaskScheduler(string name, int priority)
{
Name = name;
Priority = priority;
}
public void Add(string work, TimeSpan execution)
{
Enqueue(new Job {Work = work, Execution = execution});
}
public Job Get()
{
return (Job) Dequeue();
}
}
public class Job
{
public string Work { get; set; }
public TimeSpan Execution { get; set; }
public override string ToString()
{
return string.Format("{0} will be excuted in {1}", Work, Execution);
}
}
用法
var schedulerss = new List<TaskScheduler>
{
new TaskScheduler("Meetings", 2),
new TaskScheduler("Jobs", 1)
};
schedulerss = schedulerss.OrderBy(element => element.Priority).ToList(); //ORDER THE schedulers according to the Priority
schedulerss.Find(schedulers => schedulers.Name == "Meetings").Add("Meet Barack Obama", new TimeSpan(1, 0, 0, 15));
schedulerss.Find(schedulers => schedulers.Name == "Jobs").Add("Make a cheese sandwich :D", new TimeSpan(0, 2, 0, 15));
var meetingschedulers = schedulerss.Find(schedulers => schedulers.Name == "Meetings");
if (null != meetingschedulers)
{
foreach (var job in meetingschedulers)
{
Console.WriteLine(job);
}
}
Console.Read();
问题)
这段代码会很好地工作还是我错过了所有的事情并且有更好的方法来做这样的事情?
要求
我想要一个非常详细的答案,关于我提供的代码的缺点是什么,以及我如何创建更好的重用代码(仅适用于可能发现这个主题有用的其他人)。