1. 程式人生 > 其它 >工廠模式實現解耦

工廠模式實現解耦

技術標籤:Spring5工廠模式java

工廠模式實現解耦

解耦的含義

解耦的含義:降低程式之間的依賴性。
在實際開發中,應該做到編譯期不依賴,執行時才依賴。

需求

我們有兩個類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