作為一個初學(xué)者,想要在這方面獲得巨大的提升惰聂,必然要耐得住寂寞执桌,和源碼死磕
-
創(chuàng)建一個Spring Boot項(xiàng)目
image-maven -
目錄結(jié)構(gòu)為
image-stuct - 代碼實(shí)現(xiàn)為
package cn.itycu.service;
/**
* @author 披風(fēng)少年
* @version 1.0
* @date 2020/5/23 15:06
* 賬戶的業(yè)務(wù)層接口
*/
public interface IAccountService {
/**
* 模擬一個保存
*/
void saveAccount();
}
-----------------------------分割線-------------------------------
package cn.itycu.service.impl;
import cn.itycu.dao.IAccountDao;
import cn.itycu.dao.impl.AccountDaoImpl;
import cn.itycu.service.IAccountService;
/**
* @author 披風(fēng)少年
* @version 1.0
* @date 2020/5/23 15:11
* 賬戶的業(yè)務(wù)層實(shí)現(xiàn)類
*/
public class AccountServiceImpl implements IAccountService {
private IAccountDao accountDao = new AccountDaoImpl();
public void saveAccount() {
accountDao.saveAccount();
}
}
-----------------------------分割線-------------------------------
package cn.itycu.dao;
/**
* @author 披風(fēng)少年
* @version 1.0
* @date 2020/5/23 15:15
* 賬戶的持久層接口
*/
public interface IAccountDao {
/**
* 模擬保存賬戶
*/
void saveAccount();
}
-----------------------------分割線-------------------------------
package cn.itycu.dao.impl;
import cn.itycu.dao.IAccountDao;
/**
* @author 披風(fēng)少年
* @version 1.0
* @date 2020/5/23 15:16
* 賬戶的持久層實(shí)現(xiàn)類
*/
public class AccountDaoImpl implements IAccountDao {
public void saveAccount() {
System.out.println("保存一個賬戶");
}
}
-----------------------------分割線-------------------------------
package cn.itycu.ui;
import cn.itycu.service.IAccountService;
import cn.itycu.service.impl.AccountServiceImpl;
/**
* @author 披風(fēng)少年
* @version 1.0
* @date 2020/5/23 15:21
* 模擬一個表現(xiàn)層家厌,用于調(diào)用業(yè)務(wù)層
*/
public class Client {
public static void main(String[] args) {
IAccountService accountService = new AccountServiceImpl();
accountService.saveAccount();
}
}
通過 表先層 => 業(yè)務(wù)層 => 持久層 的一個 MVC 三層架構(gòu)沒有問題
但是 表現(xiàn)層在調(diào)用業(yè)務(wù)層時關(guān)鍵的new關(guān)鍵字和業(yè)務(wù)層在調(diào)用持久層時關(guān)鍵的new關(guān)鍵字,就是我們在實(shí)際開發(fā)中急需解決的問題褐奥,因?yàn)檫@樣一種邏輯結(jié)構(gòu)具有很強(qiáng)的耦合性使我們的代碼獨(dú)立性很差