使用策略模式时如何保存状态

时间:2015-11-05 13:58:39

标签: java strategy-pattern

我正在尝试使用策略模式实现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被注入控制器,feedModelfeedModel = new FeedModel()在构造函数中创建。我很困惑,因为我读过实体和服务应该分开。例如(http://thinkbeforecoding.com/post/2009/03/04/How-not-to-inject-services-in-entities)。我想知道战略对象是否是?

0 个答案:

没有答案