目前,我正在处理我的应用程序中的多层组合。我们从数据库中读取ProductLocations
的数据并将它们放入Solver
对象中。在另一个查询中,我们读取了与产品位置相关联的多个SalesActivities
,这些产品位置需要放置在正确的ProductLocation
对象深处的对象中。我最终得到了链式AddSalesActivity
方法,如下面的代码所示。
多年来,我在许多应用程序中看到过这种结构。有时即使是更长的链条。我今天正在考虑它,这闻起来像一个微妙的重复。有关处理此问题的不同方法的任何想法?有没有办法提出更好的设计?
class Solver{
List<ProductLocation> productLocations;
public void ImportSalesActivities{
//foreach sales activity read find the correct productLocation
//Call productLocation.AddSalesActivity)
}
}
class ProductLocation{
Forecaster forecaster;
public void AddSalesActivity(SalesActivity activity){
forecaster.AddSalesActivity(activity);
}
}
class Forecaster{
SalesActivityResolver resolver;
public void AddSalesActivity(SalesActivity activity){
resolver.AddSalesActivity(activity);
}
}
class SalesActivityResolver{
List<SalesActivity> resolvedActivities;
public AddSalesActivity(activity){
//update resolved activities based on complicated criteria.
}
}
答案 0 :(得分:1)
按照你在这里描述的方式,人们可以删除类ProductLocation
和Forecaster
,但我猜他们做的其他事情没有在这里显示,因此无法删除。如果不更好地理解这些对象和类的语义,我就无法帮助你了。我的一般建议是你应该尝试为一个简单的场景(不是太多的对象)创建一个UML-Object-Diagram的应用程序。这可以帮助您发现模式并更好地理解对象的角色。