我有一个爪哇弹簧引导应用程序,它具有层(包):使应用层松散耦合
- 控制器(控制器类)
- 服务(业务逻辑)
- 域(数据库层)
Inside My Domain
我有两个数据库类
- MysqlDBManager
- MongoDBManager
我在service package
其中同时使用MysqlDBManager
的方法以及MongoDBManager
许多类。
如果我用实例MysqlDBManager' and
MongoDBManager`的我的服务类直接再服务层将得到紧密域层耦合。
要我域解决这个问题,我创建了一个名为**DBManager**
类包,它表现为根据内部用例这就要求MysqlDBManager' and
MongoDBManager`代理类。
现在是服务层,而不是调用MysqlDBManager' and
MongoDBManager directly they call
DBManager , which internally calls
MysqlDBManager'和MongoDBManager
。
因此,现在我的服务类不与域层紧密耦合。
下面是我的类与我的用例类似。
MongoDBManager类:
Class MongoDBManager {
public saveUserDocs(String docs) {
//.....
}
}
MysqlDBManager类:
Class MysqlDBManager {
public saveUserData(List<String> rows) {
//.....
}
}
DBManager类:
Class DBManager {
@Autowired
private MysqlDBManager mysqlDBManager;
@Autowired
private MongoDBManager mongoDBManager;
public saveUserData(List<String> rows) {
mysqlDBManager.saveUserData(rows);
}
public saveUserDocs(String docs) {
mongoDBManager.saveUserDocs(docs);
}
}
服务类:
class Service {
@Autowired
private DBManager dBManager;
//....... code here
dBManager.saveUserData(rows);
dBManager.saveUserDocs(docs);
}
我的问题是:
这是(如上所述)一个很好的方法,使我的应用程序层松散耦合或他们的存在更好的方法来做到这一点?
始终遵循SOA(面向服务架构),使应用程序层松散的夫妇。 –
看看“命令模式” – okante