五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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)遵守國家法律
江都市| 德兴市| 武定县| 韶山市| 安吉县| 县级市| 西贡区| 青州市| 威信县| 水城县| 宜宾县| 北海市| 临桂县| 平定县| 曲靖市| 肥城市| 利辛县| 荔波县| 高密市| 镶黄旗| 自治县| 奈曼旗| 黑水县| 新晃| 玉门市| 永城市| 民勤县| 石狮市| 安庆市| 博野县| 淮北市| 松潘县| 怀安县| 晋城| 壶关县| 沙洋县| 上林县| 朔州市| 德化县| 巩留县| 通辽市|