工廠模式實作解耦
- 解耦的含義
- 需求
- 原始方式,耦合度高
- 工廠模式實作解耦
解耦的含義
解耦的含義:降低程式之間的依賴性,
在實際開發中,應該做到編譯期不依賴,運行時才依賴,
需求
我們有兩個類UserService和UserDao,我們想實作UserService呼叫UserDao中的add方法,
原始方式,耦合度高
傳統的操作是我們在UserService中new出來一個UserDao的物件,通過UserDao的物件呼叫add方法,
UserDao代碼:
package com.Keafmd.spring5.test;
/**
* Keafmd
*
* @ClassName: UserDao
* @Description:
* @author: 牛哄哄的柯南
* @date: 2021-01-15 11:45
*/
public class UserDao {
public void add(){
System.out.println("add....");
}
}
UserService代碼:
package com.Keafmd.spring5.test;
/**
* Keafmd
*
* @ClassName: UserService
* @Description:
* @author: 牛哄哄的柯南
* @date: 2021-01-15 11:45
*/
public class UserService {
public void execute(){
UserDao userDao = new UserDao();
userDao.add();
}
}
這種辦法耦合度太高,如果UserDao的檔案路徑發生改變或者方法發生改變,那么我們的UserService也要相應的改變,不利于程式拓展,
工廠模式實作解耦
創建一個UserFactory類讓這個類的getDao方法回傳一個UserDao物件,然后讓UserService呼叫UserFactory物件的getDao方法,來獲取UserDao物件從而使用UserDao的方法,
目的:讓耦合度降低到最低限度,不可能完全沒有耦合,
UserDao代碼:
package com.Keafmd.spring5.test;
/**
* Keafmd
*
* @ClassName: UserDao
* @Description:
* @author: 牛哄哄的柯南
* @date: 2021-01-15 11:45
*/
public class UserDao {
public void add(){
System.out.println("add....");
}
}
UserFactory代碼:
package com.Keafmd.spring5.test;
/**
* Keafmd
*
* @ClassName: UserFactory
* @Description: User工廠類
* @author: 牛哄哄的柯南
* @date: 2021-01-15 11:59
*/
public class UserFactory {
public static UserDao getDao(){
return new UserDao();
}
}
UserService代碼:
package com.Keafmd.spring5.test;
/**
* Keafmd
*
* @ClassName: UserService
* @Description:
* @author: 牛哄哄的柯南
* @date: 2021-01-15 11:45
*/
public class UserService {
public void execute(){
UserDao userDao = new UserFactory().getDao();
userDao.add();
}
}
雖然這樣還是有耦合,但是已經降低了耦合度,再進一步降低就需要用到IOC,在此我們講解的工廠模式就講完了,
看完如果對你有幫助,感謝點贊支持!
如果你是電腦端,看到右下角的 “一鍵三連” 了嗎,沒錯點它[哈哈]

加油!
共同努力!
Keafmd
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/249894.html
標籤:java
上一篇:【微信開發】微信公眾號網頁授權獲取用戶基本資訊實作微信登錄
下一篇:成員變數和區域變數
