我有一個爪哇彈簧引導應用程序,它具有層(包):使應用層鬆散耦合
- 控制器(控制器類)
- 服務(業務邏輯)
- 域(數據庫層)
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