我正在尝试使用策略模式实现Feed。 我有几种不同类型的方式来检索Feed项,例如所有,建议,通过搜索。
public interface IGetFeedItemsStrategy{
FeedItems getFeedItems(int start, int amount);
}
实现如下:
public Class GetSuggestedFeedItemsStrategy implements IGetFeedItemsStrategy{
private FeedDao feedDao;
public GetSearchedFeedItemsStrategy(FeedDao feedDao
this.feedDao = feedDao;
}
FeedItems getFeedItems(int start, int amount){
return feedDao.getSuggestedItems(start, amount);
}
}
public Class GetSearchedFeedItemsStrategy implements IGetFeedItemsStrategy{
private FeedModel feedModel;
private FeedDao feedDao;
public GetSearchedFeedItemsStrategy(FeedDao feedDao, FeedModel feedModel){
this.feedDao = feedDao;
this.feedModel = feedModel;
}
FeedItems getFeedItems(int start, int amount){
return feedDao.getSearchedItems(start, amount, feedModel.getSearchPhrase());
}
}
当用户单击按钮以更改他们希望控制器调用的结果类型setGetFeedItemsStategy(new GetSuggestedFeedItemsStrategy)
或其他任何内容时。现在,只要控制器必须通过结果刷新feed或paginate,它就会使用已经设置的任何策略。
我的问题是,在策略类实现中保存对其他“实体”和“服务”对象的引用是否可以?这里feedDao
被注入控制器,feedModel
由feedModel = new FeedModel()
在构造函数中创建。我很困惑,因为我读过实体和服务应该分开。例如(http://thinkbeforecoding.com/post/2009/03/04/How-not-to-inject-services-in-entities)。我想知道战略对象是否是?