国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

(十)抽象工廠

2019-11-08 18:43:22
字體:
來源:轉載
供稿:網(wǎng)友

抽象工廠模式是所有形態(tài)的工廠模式中最為抽象和最具一般性的一種形態(tài)。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產(chǎn)品的具體的情況下,創(chuàng)建多個產(chǎn)品族中的產(chǎn)品對象。根據(jù)LSP原則,任何接受父類型的地方,都應當能夠接受子類型。因此,實際上系統(tǒng)所需要的,僅僅是類型與這些抽象產(chǎn)品角色相同的一些實例,而不是這些抽象產(chǎn)品的實例。換言之,也就是這些抽象產(chǎn)品的具體子類的實例。工廠類負責創(chuàng)建抽象產(chǎn)品的具體子類的實例。

這里寫圖片描述

還是生產(chǎn)汽車的例子,現(xiàn)在有豐田,本田兩個汽車生產(chǎn)廠,要生產(chǎn)SUV和MPV兩種類型的車。

首先創(chuàng)建一個汽車工廠抽象類CarFactory,這個工廠可以生產(chǎn)SUV,MPV兩種類型的產(chǎn)品

public abstract class CarFactory { public abstract SUVCar createSUVCar(); public abstract MPVCar createMPVCar();}

創(chuàng)建本田,和日產(chǎn)兩個工廠

public class HondaFactory extends CarFactory { @Override public SUVCar createSUVCar() { return new HondaSUVCar(); } @Override public MPVCar createMPVCar() { return new HondaMPVCar(); }}public class NissanFactory extends CarFactory { @Override public SUVCar createSUVCar() { return new NissanSUVCar(); } @Override public MPVCar createMPVCar() { return new NissanMPVCar(); }}

創(chuàng)建SUV和MPV的抽象類

public abstract class MPVCar { public abstract void start();}public abstract class SUVCar { public abstract void start();}

創(chuàng)建本田車,和日產(chǎn)車

public class HondaMPVCar extends MPVCar { @Override public void start() { System.out.OK,工廠都建好了,建個測試類,試下效果

public class Test { public static void main(String[] args) { CarFactory hongdaFactory = new HondaFactory(); hongdaFactory.createSUVCar().start(); hongdaFactory.createMPVCar().start(); CarFactory nissanFactory = new NissanFactory(); nissanFactory.createMPVCar().start(); nissanFactory.createSUVCar().start(); }}

這里寫圖片描述

具體類的創(chuàng)建實例過程與客戶端分離,客戶端通過工廠的抽象接口操縱實例,客戶端并不知道具體的實現(xiàn)是誰。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 普陀区| 怀集县| 乌恰县| 龙山县| 苏尼特右旗| 漾濞| 上蔡县| 仁布县| 彩票| 旅游| 乐都县| 黎平县| 麻江县| 云南省| 叙永县| 安泽县| SHOW| 孟津县| 陆河县| 巴青县| 古蔺县| 磐安县| 牟定县| 绍兴县| 苍梧县| 鸡泽县| 定安县| 侯马市| 怀宁县| 汨罗市| 申扎县| 新龙县| 北碚区| 禹城市| 突泉县| 察哈| 乌审旗| 南川市| 甘洛县| 沅江市| 宜宾县|