次のサービス クラスがあります。
public class JobService {
private UserService us;
public JobService (UserService us) {
this.us = us;
}
public void addJob(Job job) {
// needs to make a call to user service to update some user info
// similar dependency to the deleteUser method
}
}
public class UserService {
private JobService js;
public UserService(JobService js) {
this.js = js;
}
public void deleteUser(User u) {
using (TransactionScope scope = new TransactionScope()) {
List<IJob> jobs = jobService.findAllByUser(u.Id);
foreach (IJob job in jobs) {
js.deleteJob(job);
}
userDao.delete(user);
scope.Complete();
}
}
}
これらの各サービス クラスは IoC コンテナーによってインスタンス化されており、機能上の問題はありませんが、このアプローチには潜在的な設計上の欠陥があるように感じます。より理にかなった代替アプローチがあるかどうか疑問に思っています。