这是一个虚拟项目,主要是我想关注'分层架构'。我从其他地方跟踪了这个架构。在这里,我想从数据库中带一些“发布”。所以这是我的存储库:
public class PostRepo
{
private DataAccessLayer.DBPost _DbPostInstance = null;
public List<ModelLayer.PostModel> ListOfPosts = null;
public PostRepo()
{
_DbPostInstance = new DBPost();
}
public List<ModelLayer.PostModel> GetListOfPost()
{
DataTable dtPost = _DbPostInstance.GetPostDataTable();
foreach (DataRow dr in dtPost.Rows)
{
ModelLayer.PostModel postModel = new PostModel();
postModel.id = (int)dr[0];
postModel.postTitle = (string)dr[1];
postModel.postBody = (string)dr[2];
ListOfPosts.Add(postModel);
}
return ListOfPosts;
}
}
这就是我的商务层:
class PostBiz
{
private RepositoryLayer.PostRepo _postRepo;
public PostBiz()
{
_postRepo = new RepositoryLayer.PostRepo();
}
public List<ModelLayer.PostModel> GetListOfPost()
{
return _postRepo.GetListOfPost();
}
}
现在我的问题是:
答案 0 :(得分:1)
我不确定其他语言的最佳做法是什么,但在PHP中我使用了很多Action Domain Responder Modeling作为架构。这样,数据库就可以100%抽象出我的控制器和视图逻辑。它看起来有点像你描述的那样。
每当我想要添加基于业务逻辑的cli脚本或API时,我都会使用域而不是数据库。这样你就不会重复自己,你可以专注于业务逻辑,而不是如何显示或处理输入和输出。
在一个呈现html的控制器中,我只专注于请求和响应。其余的被抽象掉了。 在CLI脚本中,我再次关注输入和输出并调用相同的业务逻辑。 在API中,我再次关注输入和输出并调用相同的业务逻辑。
这样,每当业务逻辑发生变化时,所有3个端点(html,api和cli)都会被覆盖。