希望这不是个人观点,而是解决同事的争论,而我正在讨论申请的设计。
我们为数据层和服务使用存储库模式来应用业务逻辑。服务可以在其中包含一个或更可能的许多存储库。让我们举一个例子(我不为学校工作,但这是一个简单的例子):
我的存储库可能包括:
SchoolRepository
ClassRepoistory
DepartmentRepository
TutorRepository
TutorDepartmentRepository
TutorSkillsRepository
StudentRepository
StudentClassRepository
所以在我看来,我会有三个服务(我的例子是c#,但这适用于任何语言):
public class SchoolService : ISchoolService
{
public SchoolService(ISchoolRepository schoolRepository,
IClassRepository classRepository,
IDepartmentRepository departmentRepository)
{
....
}
}
public class TutorService : ITutorService
{
public TutorService(ITutorRepository tutorRepository,
ITutorDepartmentRepository tutorDepartmentRepository)
{
....
}
}
public class StudentService : IStudentService
{
public StudentService(IStudentRepository studentRepository,
IStudentClassRepository studentClassRepository)
{
....
}
}
现在,在我的示例中,TutorService
可能需要来自DepartmentRepository
的数据,而StudentService
也可能需要来自ClassRepository
的数据。我的论点是,如果您需要来自Class
的{{1}}对象,则应从ClassRepository
检索该对象,并且该对象应作为参数传递,如下所示:
SchoolService
我已经在这篇文章的标题上标记了另一个问题以及类的最大大小。我建议这应该不超过500行(包括花括号{},新行使其可读等),因为这使它更易于管理。我是在背后说话,还是在思考中有什么意义?
答案 0 :(得分:-1)
你把这篇文章命名为SOA问题,但你的设计却不算什么。您有一个紧密耦合的应用程序,其中每个组件都对其他组件有深入的了解。事实上,这些是直接参考的对象。
这不一定是坏事,因为整体是小型系统的可行选择,但它不是SOA。虽然如果我设计了一个上述尺寸的系统,我可能会尝试简化它,因为这里的“分层”带来了很多开销,而且收益很小(因为紧耦合)