我的系统有一个叫Task的类,负责管理各种任务。
每个Task对象都包含很多Job对象,
但是目前从Task取得JOB的方式有两种。(而且两种取得JOB的算法不完全相同,
但有一部分逻辑是相同的。)
一种是按JOB的类型取得。
类似于这样:Task.GetJob(string CategoryID)
还有一种是按JOB的所属性质取得。
类似于这样:Task.GetJob(string GroupID)
注:JOB性质相当于对JOB类型在分类。
现在的问题是,我是把这两个方法放到Task类中,
还是利用策略模式,将具体的取得JOB的方法做为Task类的取得JOB的具体策略?
以上那种方法比较好些呢?
------解决方案--------------------------------------------------------
如果没有可能再加第三种,那么用那种都可以,如果可能会加第三种,就选第二种。
设计是随着变化而变化,以应对变化。
------解决方案--------------------------------------------------------
如果可能在将来出现更多可能,不妨"策略"一下.不然放在Task里也没什么不可以.模式也好,其他什么也好,核心是变化点隔离.如果永远不可能变化,那不隔离可能也很好
------解决方案--------------------------------------------------------
工厂模式能否考虑下?
------解决方案--------------------------------------------------------
Task.getJob(Object obj)
{
}
class CategoryIDTask
{
String ;
}
class GroupIDTask
{
....
}
然后 就可以区分了
------解决方案--------------------------------------------------------
抽象工厂OR 工厂方法