工廠模式實現解耦
阿新 • • 發佈:2021-01-22
工廠模式實現解耦
解耦的含義
解耦的含義:降低程式之間的依賴性。
在實際開發中,應該做到編譯期不依賴,執行時才依賴。
需求
我們有兩個類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