Java 使用具有MVP模式的实体时,将业务逻辑放在何处
我有一些非常愚蠢的实体,它们只保存数据。我过去常常在实体或演示器中放置一些业务逻辑,即Java 使用具有MVP模式的实体时,将业务逻辑放在何处,java,android,oop,design-patterns,mvp,Java,Android,Oop,Design Patterns,Mvp,我有一些非常愚蠢的实体,它们只保存数据。我过去常常在实体或演示器中放置一些业务逻辑,即 Movie.findMostWatchedTopenMovies 电影。已观看此电影 TheaterPresenter.canScreenMoreMovies (假设这些方法包含一些复杂的逻辑,而不仅仅是getter) 但这似乎违背了坚实的原则,而且它不是测试友好的代码。 那么,把这种逻辑放在哪里最合适呢?类名应该是什么 您是对的,这违反了实体原则,您的模型必须是原子的,这意味着它们只保存值,本身不做任何
Movie.findMostWatchedTopenMovies
电影。已观看此电影
TheaterPresenter.canScreenMoreMovies
那么,把这种逻辑放在哪里最合适呢?类名应该是什么 您是对的,这违反了实体原则,您的模型必须是原子的,这意味着它们只保存值,本身不做任何更改 通过引用,您必须使用相关名称声明一些进行所需更改的类,例如:
class MovieFinder{
public static List<Movie> findMostWatchedTopTenMovies(List<Movie> moviesList){
// do the fining stuff
return mostWatchedTopTenMoviesList;
}
}
classmoviefinder{
公共静态列表FindMostWatchedTopenMovies(列表电影列表){
//做罚款的事
返回MOSTwatchedoptenMoviesList;
}
}
甚至最好的办法就是把一份新的物品清单装进板条箱,并将其退回
此外,对于纯原子模型,您可以使用库来阻止您使用模型做不寻常的事情 您应该在与实体相关的BL项目和类中执行数据操作/逻辑 我假设您使用的是某种数据源,比如DB,因此您需要对数据访问进行相同的隔离。 通常,您希望BL只包含逻辑(例如,数据验证),并且您的数据访问发生在没有逻辑的DAL(数据访问层)内 例如,如果您有一个
电影
实体:
namespace BO
{
public class Movie
{
public string Name{ get; set; }
...
}
}
namespace BL
{
public class MovieBL
{
public Movie GetMovieByName(string name)
{
return MovieDAL.GetMovieByName(name);
}
}
}