最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

java設(shè)計(jì)模式 - 工廠模式

2022-04-16 11:49 作者:指南針畢業(yè)設(shè)計(jì)  | 我要投稿

目錄

一、簡介

二、簡單工廠模式

三、工廠方法模式

四、抽象工廠模式

五、總結(jié)

一、簡介

工廠模式主要是為創(chuàng)建對(duì)象提供過渡接口,以便將創(chuàng)建對(duì)象的具體過程屏蔽隔離起來,達(dá)到提高靈活性的目的。

工廠模式有三種:簡單工廠模式、工廠方法模式、抽象工廠模式。

二、簡單工廠模式

簡單工廠模式由三類角色組成:抽象產(chǎn)品、具體產(chǎn)品、工廠類。

??抽象產(chǎn)品(寶馬):?


  1. public abstract class BMW {

  2. /**

  3. * 寶馬介紹

  4. */

  5. abstract void introduce();

  6. }

??具體產(chǎn)品(寶馬三系、寶馬五系):


  1. public class BMW320 extends BMW {

  2. @Override

  3. void introduce() {

  4. System.out.println("寶馬三系");

  5. }

  6. }


  1. public class BMW525 extends BMW {

  2. @Override

  3. void introduce() {

  4. System.out.println("寶馬五系");

  5. }

  6. }

??工廠類(寶馬三五系生產(chǎn)車間):


  1. public class BMWFactory {

  2. /**

  3. * 寶馬生產(chǎn)

  4. *

  5. * @param type 寶馬型號(hào)

  6. * @return 寶馬

  7. */

  8. public static BMW makeBMW(int type) {

  9. switch (type) {

  10. case 320:

  11. return new BMW320();

  12. case 525:

  13. return new BMW525();

  14. default:

  15. break;

  16. }

  17. return null;

  18. }

  19. }

??調(diào)用:


  1. public class Customer {

  2. public static void main(String[] args) {

  3. // 生產(chǎn)寶馬三系

  4. BMW bmw320 = BMWFactory.makeBMW(320);

  5. // 生產(chǎn)寶馬五系

  6. BMW bmw525 = BMWFactory.makeBMW(525);

  7. }

  8. }

優(yōu)點(diǎn):

1、將產(chǎn)品交由工廠創(chuàng)建,使用方無需關(guān)心產(chǎn)品創(chuàng)建細(xì)節(jié),實(shí)現(xiàn)了創(chuàng)建與使用的解耦。

缺點(diǎn):

1、違背 “開閉原則”(對(duì)擴(kuò)展開放,對(duì)修改封閉),新增產(chǎn)品(寶馬七系)不得不修改工廠類邏輯。

三、工廠方法模式

工廠方法模式由四類角色組成:抽象產(chǎn)品、具體產(chǎn)品、抽象工廠、具體工廠。?

??抽象產(chǎn)品(寶馬):


  1. public abstract class BMW {

  2. /**

  3. * 寶馬介紹

  4. */

  5. abstract void introduce();

  6. }

??具體產(chǎn)品(寶馬三系、寶馬五系):?


  1. public class BMW320 extends BMW {

  2. @Override

  3. void introduce() {

  4. System.out.println("寶馬三系");

  5. }

  6. }


  1. public class BMW525 extends BMW {

  2. @Override

  3. void introduce() {

  4. System.out.println("寶馬五系");

  5. }

  6. }

? ?抽象工廠(寶馬生產(chǎn)車間):


  1. public abstract class Factory {

  2. /**

  3. * 寶馬生產(chǎn)

  4. *

  5. * @return 寶馬

  6. */

  7. abstract BMW makeBMW();

  8. }

??具體工廠(寶馬三系生產(chǎn)車間、寶馬五系生產(chǎn)車間):?


  1. public class BMW320Factory extends Factory {

  2. @Override

  3. BMW makeBMW() {

  4. return new BMW320();

  5. }

  6. }


  1. public class BMW525Factory extends Factory {

  2. @Override

  3. BMW makeBMW() {

  4. return new BMW525();

  5. }

  6. }

??調(diào)用:?


  1. public class Customer {

  2. public static void main(String[] args) {

  3. // 生產(chǎn)寶馬三系

  4. Factory bMW320Factory = new BMW320Factory();

  5. BMW bmw320 = bMW320Factory.makeBMW();


  6. // 生產(chǎn)寶馬五系

  7. Factory bMW525Factory = new BMW525Factory();

  8. BMW bmw525 = bMW525Factory.makeBMW();

  9. }

  10. }

優(yōu)點(diǎn):

1、符合 “開閉原則”(對(duì)擴(kuò)展開放,對(duì)修改封閉),新增產(chǎn)品(寶馬七系)只需新增具體產(chǎn)品類和具體工廠類即可。

2、符合 “單一職責(zé)原則”,每個(gè)具體工廠類只負(fù)責(zé)創(chuàng)建對(duì)應(yīng)的產(chǎn)品。

缺點(diǎn):

1、系統(tǒng)復(fù)雜度增加:新增產(chǎn)品(寶馬七系),類的個(gè)數(shù)成對(duì)增加(寶馬七系?+ 寶馬七系生產(chǎn)車間)。

2、系統(tǒng)抽象性和理解難度增加。

3、具體工廠只能創(chuàng)建一類產(chǎn)品(寶馬類)。

四、抽象工廠模式

抽象工廠模式由五類角色組成:抽象產(chǎn)品族、抽象產(chǎn)品、具體產(chǎn)品、抽象工廠、具體工廠。

? 抽象產(chǎn)品族(汽車):?


  1. public abstract class Car {

  2. /**

  3. * 汽車介紹

  4. */

  5. abstract void introduce();

  6. }

??抽象產(chǎn)品(寶馬、奔馳):


  1. public abstract class BMW extends Car {

  2. /**

  3. * 寶馬介紹

  4. */

  5. @Override

  6. abstract void introduce();

  7. }


  1. public abstract class Benz extends Car {

  2. /**

  3. * 奔馳介紹

  4. */

  5. @Override

  6. abstract void introduce();

  7. }

? 具體產(chǎn)品(寶馬三系、寶馬五系、奔馳C級(jí)、奔馳E級(jí)):


  1. public class BMW320 extends BMW {

  2. @Override

  3. void introduce() {

  4. System.out.println("寶馬三系");

  5. }

  6. }


  1. public class BMW525 extends BMW {

  2. @Override

  3. void introduce() {

  4. System.out.println("寶馬五系");

  5. }

  6. }


  1. public class BenzC extends Benz {

  2. @Override

  3. void introduce() {

  4. System.out.println("奔馳C級(jí)");

  5. }

  6. }


  1. public class BenzE extends Benz {

  2. @Override

  3. void introduce() {

  4. System.out.println("奔馳E級(jí)");

  5. }

  6. }

? ?抽象工廠(汽車生產(chǎn)車間):


  1. public abstract class Factory {

  2. /**

  3. * 寶馬生產(chǎn)

  4. *

  5. * @return 汽車

  6. */

  7. abstract Car makeBMW();


  8. /**

  9. * 奔馳生產(chǎn)

  10. *

  11. * @return 汽車

  12. */

  13. abstract Car makeBenz();

  14. }

??具體工廠(寶馬三系+奔馳C級(jí)生產(chǎn)車間、寶馬五系+奔馳E級(jí)生產(chǎn)車間):


  1. public class BMW320BenzCFactory extends Factory {

  2. @Override

  3. Car makeBMW() {

  4. return new BMW320();

  5. }


  6. @Override

  7. Car makeBenz() {

  8. return new BenzC();

  9. }

  10. }


  1. public class BMW525BenzEFactory extends Factory {

  2. @Override

  3. Car makeBMW() {

  4. return new BMW525();

  5. }


  6. @Override

  7. Car makeBenz() {

  8. return new BenzE();

  9. }

  10. }

??調(diào)用:?


  1. public class Customer {

  2. public static void main(String[] args) {

  3. // 生產(chǎn)寶馬三系+奔馳C級(jí)

  4. Factory bMW320BenzCFactory = new BMW320BenzCFactory();

  5. Car bmw320 = bMW320BenzCFactory.makeBMW();

  6. Car benzC = bMW320BenzCFactory.makeBenz();


  7. // 生產(chǎn)寶馬五系+奔馳E級(jí)

  8. Factory bMW525BenzEFactory = new BMW525BenzEFactory();

  9. Car bmw525 = bMW525BenzEFactory.makeBMW();

  10. Car benzE = bMW525BenzEFactory.makeBenz();

  11. }

  12. }

優(yōu)點(diǎn):

1、符合 “開閉原則”(對(duì)擴(kuò)展開放,對(duì)修改封閉)。

2、符合 “單一職責(zé)原則”。

缺點(diǎn):?

1、難以擴(kuò)展新種類(奧迪)。

五、總結(jié)

抽象程度:

簡單工廠模式 < 工廠方法模式 < 抽象工廠模式。

角色分類:

1、簡單工廠模式:抽象產(chǎn)品、具體產(chǎn)品、工廠類。

2、工廠方法模式:抽象產(chǎn)品、具體產(chǎn)品、抽象工廠、具體工廠。

3、抽象工廠模式:抽象產(chǎn)品族、抽象產(chǎn)品、具體產(chǎn)品、抽象工廠、具體工廠。


java設(shè)計(jì)模式 - 工廠模式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
娄烦县| 云阳县| 临漳县| 和静县| 敦煌市| 凤冈县| 汉寿县| 横峰县| 凯里市| 上饶市| 平山县| 饶阳县| 沁源县| 多伦县| 古交市| 高邑县| 长宁区| 雷山县| 虹口区| 阆中市| 南陵县| 石屏县| 临安市| 合水县| 昌图县| 巴彦淖尔市| 左权县| 石泉县| 鄂伦春自治旗| 紫金县| 高邑县| 聂拉木县| 湖州市| 株洲市| 平罗县| 北票市| 车险| 海口市| 弥渡县| 乌苏市| 密云县|