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

專(zhuān)注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 什么是Java工廠方法設(shè)計(jì)模式

什么是Java工廠方法設(shè)計(jì)模式

更新時(shí)間:2022-08-09 10:41:16 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1206次

它是一種關(guān)于創(chuàng)建對(duì)象的創(chuàng)建設(shè)計(jì)模式。工廠設(shè)計(jì)模式說(shuō)定義一個(gè)接口(Java接口或抽象類(lèi))來(lái)創(chuàng)建對(duì)象,讓子類(lèi)決定實(shí)例化哪個(gè)類(lèi)。接口中的工廠方法允許類(lèi)將實(shí)例化推遲到一個(gè)或多個(gè)具體子類(lèi)。由于這些設(shè)計(jì)模式談?wù)搶?duì)象的實(shí)例化,因此它屬于創(chuàng)建設(shè)計(jì)模式的范疇。如果我們注意到名稱(chēng)工廠方法,這意味著有一個(gè)方法是工廠,一般來(lái)說(shuō),工廠涉及創(chuàng)建的東西,在這里,一個(gè)對(duì)象正在被創(chuàng)建。這是創(chuàng)建對(duì)象的最佳方法之一,其中對(duì)象創(chuàng)建邏輯對(duì)客戶端隱藏。現(xiàn)在讓我們看一下實(shí)現(xiàn)。

執(zhí)行:

在接口內(nèi)定義工廠方法。

讓子類(lèi)實(shí)現(xiàn)上述工廠方法,并決定創(chuàng)建哪個(gè)對(duì)象。

在 Java 中,構(gòu)造函數(shù)不是多態(tài)的,但通過(guò)允許子類(lèi)創(chuàng)建對(duì)象,我們將多態(tài)行為添加到實(shí)例化中。簡(jiǎn)而言之,我們?cè)噲D通過(guò)讓子類(lèi)決定創(chuàng)建什么來(lái)實(shí)現(xiàn)偽多態(tài),因此這個(gè)工廠方法也稱(chēng)為虛擬構(gòu)造函數(shù)。

讓我們嘗試用一個(gè)實(shí)時(shí)問(wèn)題和一些編碼練習(xí)來(lái)實(shí)現(xiàn)它。

問(wèn)題陳述: 考慮我們想要通過(guò)電子郵件、短信和推送通知實(shí)現(xiàn)通知服務(wù)。讓我們嘗試在工廠方法設(shè)計(jì)模式的幫助下實(shí)現(xiàn)這一點(diǎn)。首先,我們將為此設(shè)計(jì)一個(gè) UML 類(lèi)圖。

在上面的類(lèi)圖中,我們有一個(gè)名為Notification的接口,三個(gè)具體的類(lèi)正在實(shí)現(xiàn) Notification 接口。創(chuàng)建工廠類(lèi) NotificationFactory 以獲取 Notification 對(duì)象。現(xiàn)在讓我們進(jìn)入編碼。

創(chuàng)建通知界面

public interface Notification {
    void notifyUser();
}

注意 - 上面的接口也可以創(chuàng)建為抽象類(lèi)。

創(chuàng)建所有實(shí)現(xiàn)類(lèi)

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");
    }
}

創(chuàng)建工廠類(lèi) NotificationFactory.java 來(lái)實(shí)例化具體類(lèi)。

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);
		}
	}
}

現(xiàn)在讓我們使用工廠類(lèi)通過(guò)傳遞一些信息來(lái)創(chuàng)建和獲取具體類(lèi)的對(duì)象。

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

輸出:發(fā)送短信通知

實(shí)時(shí)示例:

這種設(shè)計(jì)模式在JDK中已經(jīng)被廣泛使用,例如

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

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

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

以上就是關(guān)于“什么是Java工廠方法設(shè)計(jì)模式”的介紹,大家如果想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門(mén)到精通,細(xì)致全面,很適合沒(méi)有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日韩在线视频不卡 | 亚洲精品综合一区二区三区 | 天天操操操操操 | 成人在线第一页 | 妇女网站爱嘿嘿视频免费观看 | 精品国产96亚洲一区二区三区 | 久久合| 亚洲精品高清久久 | 日日摸天天摸狠狠摸摸 | 成人欧美精品一区二区不卡 | 久久91精品国产91久久 | 大乳女做爰中文字幕 | 国产成人免费手机在线观看视频 | www.日韩视频 | 老司机日日摸夜夜摸精品影院 | 四虎在线播放 | 手机看片日韩国产一区二区 | 亚洲国产精品久久综合 | 成人午夜视频在线观看 | 最新中文字幕一区 | 日本一区二 | 久久综合亚洲 | 久久成人18免费 | 羞羞视频免费网站在线 | 亚洲一级成人 | 一级片免费网址 | 亚洲国产成人久久一区久久 | 老师邪恶影院a啦啦啦影院 老师在办公室被躁到白浆 老湿机午夜影院 | 久操香蕉 | 国产精品久久久一区二区三区 | 亚洲日本中文字幕在线 | 中文字幕视频在线 | 国产自产视频在线观看香蕉 | 亚洲高清成人欧美动作片 | 欧美一级看片a免费视频 | 精品国产美女 | 久久视频免费看 | 天天色天天草 | 欧美一级在线毛片免费观看 | 国产精品一区二区久久精品涩爱 | 久久综久久美利坚合众国 |