大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 什么是Java工廠方法設計模式

什么是Java工廠方法設計模式

更新時間:2022-08-09 10:41:16 來源:動力節點 瀏覽1048次

它是一種關于創建對象的創建設計模式。工廠設計模式說定義一個接口(Java接口或抽象類)來創建對象,讓子類決定實例化哪個類。接口中的工廠方法允許類將實例化推遲到一個或多個具體子類。由于這些設計模式談論對象的實例化,因此它屬于創建設計模式的范疇。如果我們注意到名稱工廠方法,這意味著有一個方法是工廠,一般來說,工廠涉及創建的東西,在這里,一個對象正在被創建。這是創建對象的最佳方法之一,其中對象創建邏輯對客戶端隱藏。現在讓我們看一下實現。

執行:

在接口內定義工廠方法。

讓子類實現上述工廠方法,并決定創建哪個對象。

在 Java 中,構造函數不是多態的,但通過允許子類創建對象,我們將多態行為添加到實例化中。簡而言之,我們試圖通過讓子類決定創建什么來實現偽多態,因此這個工廠方法也稱為虛擬構造函數。

讓我們嘗試用一個實時問題和一些編碼練習來實現它。

問題陳述: 考慮我們想要通過電子郵件、短信和推送通知實現通知服務。讓我們嘗試在工廠方法設計模式的幫助下實現這一點。首先,我們將為此設計一個 UML 類圖。

在上面的類圖中,我們有一個名為Notification的接口,三個具體的類正在實現 Notification 接口。創建工廠類 NotificationFactory 以獲取 Notification 對象。現在讓我們進入編碼。

創建通知界面

public interface Notification {
    void notifyUser();
}

注意 - 上面的接口也可以創建為抽象類。

創建所有實現類

SMSNotification.java

public class SMSNotification implements Notification { 
    @Override
    public void notifyUser()
    {
        // TODO Auto-generated method stub
        System.out.println("Sending an SMS notification");
    }
}

電子郵件通知.java

public class EmailNotification implements Notification { 
    @Override
    public void notifyUser()
    {
        // TODO Auto-generated method stub
        System.out.println("Sending an e-mail notification");
    }
}

PushNotification.java

public class PushNotification implements Notification {
    @Override
    public void notifyUser()
    {
        // TODO Auto-generated method stub
        System.out.println("Sending a push notification");
    }
}

創建工廠類 NotificationFactory.java 來實例化具體類。

public class NotificationFactory {
	public Notification createNotification(String channel)
	{
		if (channel == null || channel.isEmpty())
			return null;
		switch (channel) {
		case "SMS":
			return new SMSNotification();
		case "EMAIL":
			return new EmailNotification();
		case "PUSH":
			return new PushNotification();
		default:
			throw new IllegalArgumentException("Unknown channel "+channel);
		}
	}
}

現在讓我們使用工廠類通過傳遞一些信息來創建和獲取具體類的對象。

public class NotificationService {
    public static void main(String[] args)
    {
        NotificationFactory notificationFactory = new NotificationFactory();
        Notification notification = notificationFactory.createNotification("SMS");
        notification.notifyUser();
    }
}

輸出:發送短信通知

實時示例:

這種設計模式在JDK中已經被廣泛使用,例如

1. java.util.Calendar、NumberFormat、ResourceBundle的getInstance()方法采用工廠方法設計模式。

2. Java 中的所有包裝類,如 Integer、Boolean 等,都使用這種模式來使用 valueOf() 方法評估值。

3. java.nio.charset.Charset.forName()、java.sql.DriverManager#getConnection()、java.net.URL.openConnection()、java.lang.Class.newInstance()、java.lang.Class。 forName() 是使用工廠方法設計模式的一些示例。

以上就是關于“什么是Java工廠方法設計模式”的介紹,大家如果想了解更多相關知識,可以關注一下動力節點的Java在線學習,里面的課程內容從入門到精通,細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产小视频国产精品 | 亚洲综合色在线观看 | 2018一级毛片免费观看 | 四虎精品永久在线网址 | 一本到视频在线观看 | 亚洲高清在线观看看片 | 亚洲精品乱码久久久久久v 亚洲精品乱码久久久久久麻豆 | 成人免费观看一区二区 | 高清人人天天夜夜曰狠狠狠狠 | 亚洲一区在线免费 | 在线观看色视频 | 国产成人拍精品视频网 | 一级特黄性色生活片一区二区 | 天天干夜夜爽天天操夜夜爽视频 | 中文乱码在线观看 | 伊人久久大香线蕉综合bd高清 | 国产一区二区精品在线观看 | 日韩欧美在线看 | 国产在线五月综合婷婷 | 国产区综合 | 国产精品国产高清国产专区 | 日本免费人成黄页网观看视频 | 欧美成人在线观看 | 狠狠色噜噜狠狠狠狠97老肥女 | 色国产精品一区在线观看 | 日韩黄a级成人毛片 | 国内揄拍国内精品久久 | 久久国产亚洲精品麻豆 | 亚洲精品国产专区一区 | 免费精品在线视频 | 国产综合欧美日韩视频一区 | 亚洲你懂的 | 亚洲婷婷丁香 | 久久99热精品免费观看 | 天天撸天天操 | 青草精品视频 | 亚洲国产成人久久精品动漫 | 国产精品麻豆一区二区 | 国产99视频精品免费视频7 | 91成人国产 | www.色综合|