国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

西安購物網(wǎng)站建設(shè)2022年新聞熱點事件

西安購物網(wǎng)站建設(shè),2022年新聞熱點事件,wordpress多語言設(shè)置,高端網(wǎng)站制作1.抽象工廠模式定義: 抽象工廠模式提供了一個創(chuàng)建一系列相關(guān)或者相互依賴對象的接口,無需指定它們具體的類 2.抽象工廠模式適用場景: 客戶端(應(yīng)用層)不依賴于產(chǎn)品類實例如何被創(chuàng)建、實現(xiàn)等細節(jié)強調(diào)一系列相關(guān)的產(chǎn)品對象(屬于同一產(chǎn)品族)一起使用創(chuàng)建對象需要大量…

1.抽象工廠模式定義:

抽象工廠模式提供了一個創(chuàng)建一系列相關(guān)或者相互依賴對象的接口,無需指定它們具體的類

2.抽象工廠模式適用場景:

  • 客戶端(應(yīng)用層)不依賴于產(chǎn)品類實例如何被創(chuàng)建、實現(xiàn)等細節(jié)
  • 強調(diào)一系列相關(guān)的產(chǎn)品對象(屬于同一產(chǎn)品族)一起使用創(chuàng)建對象需要大量的重復代碼
  • 提供一個產(chǎn)品類的庫,所有的產(chǎn)品以同樣的接口出現(xiàn),從而使得客戶端不依賴于具體的實現(xiàn)

3.抽象工廠模式的優(yōu)缺點:


優(yōu)點:

  • 具體產(chǎn)品在應(yīng)用層的代碼隔離,無需關(guān)心創(chuàng)建的細節(jié)
  • 將一個系列的產(chǎn)品統(tǒng)一到一起創(chuàng)建


缺點:

  • 規(guī)定了所有可能被創(chuàng)建的產(chǎn)品集合,產(chǎn)品簇中擴展新的產(chǎn)品困難
  • 增加了系統(tǒng)的抽象性和理解難度

創(chuàng)建一個手機接口 cn.xs.abstraction.IPhoneProduct
代碼如下:
public interface IPhoneProduct {
/**
* 開機
*/
void open();
/**
* 關(guān)機
*/
void close();
/**
* 發(fā)短信
*/
void send();
/**
* 打電話
*/
void call();
}
創(chuàng)建一個路由器接口 cn.xs.abstraction.IRouterProduct
代碼如下:
public interface IRouterProduct {
/**
* 開機
*/
void open();
/**
* 關(guān)機
*/
void close();
/**
* 設(shè)置參數(shù)
*/
void setting();
/**
* 打開 wifi
*/
void wifi();
}
新建小米手機產(chǎn)品類 cn.xs.abstraction.XiaomiPhone
代碼如下:
public class XiaomiPhone implements IPhoneProduct {
public void open() {
System.out.println("小米手機開機");
}
public void close() {
System.out.println("小米手機關(guān)機");
}
public void send() {
System.out.println("小米手機發(fā)短信");
}
public void call() {
System.out.println("小米手機打電話");
}
}
新建小米路由器產(chǎn)品類 cn.xs.abstraction.XiaomiRouter
?
代碼如下:
public class XiaomiRouter implements IRouterProduct {
public void open() {
System.out.println("小米路由器開機");
}
public void close() {
System.out.println("小米路由器關(guān)機");
}
public void setting() {
System.out.println("小米路由器設(shè)置參數(shù)");
}
public void wifi() {
System.out.println("小米路由器打開wifi");
}
}
新建華為手機產(chǎn)品類 cn.xs.abstraction.HuaweiPhone
代碼如下:
public class HuaweiPhone implements IPhoneProduct {
public void open() {
System.out.println("華為手機開機");
}
public void close() {
System.out.println("華為手機關(guān)機");
}
public void send() {
System.out.println("華為手機發(fā)短信");
}
public void call() {
System.out.println("華為手機打電話");
}
}
新建華為路由器產(chǎn)品類 cn.xs.abstraction.HuaweiRouter??
代碼如下:
public class HuaweiRouter implements IRouterProduct {
public void open() {
System.out.println("華為路由器開機");
}
public void close() {
System.out.println("華為路由器關(guān)機");
}
public void setting() {
System.out.println("華為路由器設(shè)置參數(shù)");
}
public void wifi() {
System.out.println("華為路由器打開wifi");
}
}
新建抽象工廠 cn.xs.abstraction.IProductFactory 來生產(chǎn)手機跟路由器(抽象):
public interface IProductFactory {
/**
* 生產(chǎn)手機
*
* @return
*/
IPhoneProduct getPhone();
/**
* 生產(chǎn)路由器
*
* @return
*/
IRouterProduct getRouter();
}
新建小米工廠 cn.xs.abstraction.XiaomiFactory 來生產(chǎn)手機跟路由器:
public class XiaomiFactory implements IProductFactory {
public IPhoneProduct getPhone() {
return new XiaomiPhone();
}
public IRouterProduct getRouter() {
return new XiaomiRouter();
}
}
新建華為工廠 cn.xs.abstraction.HuaweiFactory 來生產(chǎn)手機跟路由器:

?

public class HuaweiFactory implements IProductFactory {
public IPhoneProduct getPhone() {
return new HuaweiPhone();
}
public IRouterProduct getRouter() {
return new HuaweiRouter();
}
}

?根據(jù)類圖關(guān)系深入了解:

?

新建測試類 cn.xs.abstraction.Client 來進行測試:

public class Client {
/**
* 測試方法
*
* @param args
*/
public static void main(String[] args) {
System.out.println("==========小米系列產(chǎn)品==========");
// 創(chuàng)建小米工廠
IProductFactory factory1 = new XiaomiFactory();
IPhoneProduct phone1 = factory1.getPhone();
phone1.send();
phone1.call();
IRouterProduct router1 = factory1.getRouter();
router1.setting();
router1.wifi();
System.out.println("==========華為系列產(chǎn)品==========");
// 創(chuàng)建華為工廠
IProductFactory factory2 = new HuaweiFactory();
IPhoneProduct phone2 = factory2.getPhone();
phone2.send();
phone2.call();
IRouterProduct router2 = factory2.getRouter();
router2.setting();
router2.wifi();
}
}

再看一下整體的一個類圖

運行 main ?

抽象工廠模式在產(chǎn)品穩(wěn)定的情況下是極其強大的,但是如果要添加產(chǎn)品,其子類都需要修改代碼,違反了開閉原則
小結(jié):
簡單工廠模式(靜態(tài)工廠模式):

雖然某種程度上不符合設(shè)計原則,但實際使用最多!
工廠方法模式:

不修改已有類的前提下,通過增加新的工廠類實現(xiàn)擴展
抽象工廠模式:

不可以增加產(chǎn)品,可以增加產(chǎn)品族!

應(yīng)用場景:

JDK中Calendar的getInstance方法
JDBC中的Connection對象的獲取
Spring中IOC容器創(chuàng)建管理bean對象反射中Class對象的newInstance方法

?

http://aloenet.com.cn/news/43639.html

相關(guān)文章:

  • 學會網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣員要怎么做
  • 專業(yè)網(wǎng)站建設(shè)網(wǎng)站設(shè)計百度云盤資源搜索
  • 網(wǎng)站建設(shè)兩年免費維護正規(guī)seo排名公司
  • 高端網(wǎng)站建設(shè)天軟科技廣告設(shè)計與制作
  • 南京領(lǐng)動做網(wǎng)站怎么樣寧波網(wǎng)站建設(shè)公司
  • 個人網(wǎng)站制作總體設(shè)計熱搜榜上2023年熱搜
  • 手機網(wǎng)站 圖片自適應(yīng)2021年十大熱點事件
  • 網(wǎng)站做支付按流量付費嗎免費發(fā)布廣告
  • 網(wǎng)上賺錢日結(jié)工資正規(guī)蘇州旺道seo
  • 專做bbin網(wǎng)站接口全網(wǎng)營銷推廣靠譜嗎
  • 學做電影網(wǎng)站百度廣告聯(lián)系方式
  • wordpress安裝ssl后網(wǎng)站404南昌企業(yè)網(wǎng)站建設(shè)
  • 做網(wǎng)站和服務(wù)器的大小有關(guān)嗎貴州seo技術(shù)培訓
  • 外貿(mào)先做網(wǎng)站還是開公司成功的網(wǎng)絡(luò)營銷案例有哪些
  • 專業(yè)網(wǎng)站推廣的公司網(wǎng)絡(luò)營銷推廣專員
  • 泰安網(wǎng)站建設(shè)538sw云優(yōu)化軟件
  • 企業(yè)網(wǎng)站建設(shè)457國際新聞 軍事
  • 贛州網(wǎng)站建設(shè)優(yōu)化服務(wù)優(yōu)化搜索引擎
  • 綿陽低價網(wǎng)站建設(shè)聊城seo培訓
  • 網(wǎng)站開發(fā)公司杭州網(wǎng)站建設(shè)今日頭條新聞手機版
  • 做網(wǎng)站制作云南網(wǎng)站seo服務(wù)
  • 黑龍江專業(yè)建站西安seo推廣公司
  • 政府網(wǎng)站與門戶網(wǎng)站的區(qū)別論壇推廣技巧
  • 怎么做網(wǎng)站效果圖網(wǎng)絡(luò)營銷自學網(wǎng)站
  • 做校園文化的網(wǎng)站市場營銷手段有哪四種
  • 網(wǎng)站運營優(yōu)化方案優(yōu)秀軟文營銷案例
  • 網(wǎng)站建設(shè)規(guī)劃書的目的南昌seo排名收費
  • 網(wǎng)站怎么自己做優(yōu)化小說網(wǎng)站排名前十
  • wordpress獲取菜單欄優(yōu)化大師好用嗎
  • 好建網(wǎng)站今日足球比賽預測推薦分析