国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一篇學會抽象工廠模式

開發(fā) 前端
定義一個超級工廠,用于創(chuàng)建其他對應產品工廠。該工廠又可看成其他各種工廠的工廠。

[[409513]]

本文轉載自微信公眾號「我好困啊」,作者mengxin。轉載本文請聯(lián)系我好困啊公眾號。

意圖

定義一個超級工廠,用于創(chuàng)建其他對應產品工廠。該工廠又可看成其他各種工廠的工廠。

主要解決

解決接口選擇問題

關鍵代碼

在一個工廠內聚合多個同類型的產品,然后定義超級工廠創(chuàng)建對應工廠。

優(yōu)點

當一個產品族中多個對象被設計成一起工作的時候,每次獲取都能保證獲取到同一類型的產品。

缺點

產品族擴展非常困難,要增加一個系列的某一產品,對象過多。

使用場景

需要生成不同類型的產品族時。如:白貓,黑貓等它們可組成同一產品"貓"。而大狗,小狗等它們可組成同一產品“狗”,那么我們每次獲取都能保證獲取到的是同一類型的產品。獲取貓時,可獲取里面的一整套的各種品種的貓。

具體實現

創(chuàng)建第一個產品族

  1. 1/** 
  2. 2* 第一個產品,dog 
  3. 3*/ 
  4. 4public interface Dog { 
  5. 6   //設置dog公用跑的動作 
  6. 7   void run(); 
  7. 8} 

其對應的產品族對應下的產品

Dog第一個產品

  1. 1/** 
  2. 2* Dog 產品族-> BigDog 
  3. 3*/ 
  4. 4public class BigDog implements Dog{ 
  5. 6   @Override 
  6. 7   public void run() { 
  7. 8       System.out.println("The big dog runs fast..."); 
  8. 9  } 
  9. 0} 

Dog第二個產品

  1. 1/** 
  2. 2* Dog 產品族-> SmallDog 
  3. 3*/ 
  4. 4public class SmallDog implements Dog{ 
  5. 6   @Override 
  6. 7   public void run() { 
  7. 8       System.out.println("The small dog runs slow..."); 
  8. 9  } 
  9. 0} 

創(chuàng)建dog工廠用于生成dog產品

  1.  1/** 
  2.  2* 用于生成對應Dog的工廠 
  3.  3*/ 
  4.  4public class DogFactory extends AnimeFactory{ 
  5.  5 
  6.  6 
  7.  7   @Override 
  8.  8   public Dog getDog(String size) { 
  9.  9       if ("BIG".equals(size.toUpperCase())){ 
  10. 10           return new BigDog(); 
  11. 11      }else if ("SMALL".equals(size.toUpperCase())){ 
  12. 12           return new SmallDog(); 
  13. 13      } 
  14. 14       return null
  15. 15  } 
  16. 16 
  17. 17 
  18. 18   @Override 
  19. 19   public Cat getCat(String color) { 
  20. 20       return null
  21. 21  } 
  22. 22} 

創(chuàng)建第二個產品族

  1. 1/** 
  2. 2* 第二個產品cat 
  3. 3*/ 
  4. 4public interface Cat { 
  5. 6   //貓的公用動作 
  6. 7   void speak(); 
  7. 8} 

其產品族對應下的產品:

Cat第一個產品

  1. 1/** 
  2. 2* Cat 產品族-> BlackCat 
  3. 3*/ 
  4. 4public class BlackCat implements Cat{ 
  5. 6   @Override 
  6. 7   public void speak() { 
  7. 8       System.out.println("Black cat speak miaomiaomiao"); 
  8. 9  } 
  9. 0} 

Cat第二個產品

  1. 1/** 
  2. 2* Cat 產品族-> WhiteCat 
  3. 3*/ 
  4. 4public class WhiteCat implements Cat{ 
  5. 6   @Override 
  6. 7   public void speak() { 
  7. 8       System.out.println("White cat speak miaomiaomiao"); 
  8. 9  } 
  9. 0} 

創(chuàng)建Cat工廠,用于生成cat

  1.  1/** 
  2.  2* 用于生產對應Cat的工廠 
  3.  3*/ 
  4.  4public class CatFactory extends AnimeFactory{ 
  5.  5 
  6.  6   @Override 
  7.  7   public Dog getDog(String size) { 
  8.  8       return null
  9.  9  } 
  10. 10 
  11. 11   @Override 
  12. 12   public Cat getCat(String color) { 
  13. 13       if ("WHITE".equals(color.toUpperCase())){ 
  14. 14           return new WhiteCat(); 
  15. 15      }else if ("BLACK".equals(color.toUpperCase())){ 
  16. 16           return new BlackCat(); 
  17. 17      } 
  18. 18       return null
  19. 19  } 
  20. 20} 

最后創(chuàng)建超級工廠,生成對應工廠

  1. 1/** 
  2. 2 * 超級抽象工廠,用于創(chuàng)建其他工廠 
  3. 3 */ 
  4. 4public abstract class AnimeFactory { 
  5. 6    public abstract Dog getDog(String size); 
  6. 8    public abstract Cat getCat(String color); 
  7. 0} 
  1.  1/** 
  2.  2 * 用于生成對應工廠的工具類 
  3.  3 */ 
  4.  4public class FactoryProducer { 
  5.  5 
  6.  6    public static AnimeFactory getAnimeFactory(String type){ 
  7.  7        if ("CAT".equals(type.toUpperCase())){ 
  8.  8            //生成對應貓的工廠 
  9.  9            return new CatFactory(); 
  10. 10        }else if ("DOG".equals(type.toUpperCase())){ 
  11. 11            //生成對應狗工廠 
  12. 12            return new DogFactory(); 
  13. 13        } 
  14. 14        return null
  15. 15    } 
  16. 16 
  17. 17} 

測試:

  1.  1/** 
  2.  2 * 測試類 
  3.  3 */ 
  4.  4public class Test { 
  5.  5 
  6.  6    public static void main(String[] args) { 
  7.  7        //獲取貓工廠 
  8.  8        AnimeFactory factory = FactoryProducer.getAnimeFactory("cat"); 
  9.  9        Cat cat = factory.getCat("Black"); 
  10. 10        cat.speak(); 
  11. 11 
  12. 12        //獲取狗工廠 
  13. 13        factory = FactoryProducer.getAnimeFactory("dog"); 
  14. 14        Dog dog = factory.getDog("Big"); 
  15. 15        dog.run(); 
  16. 16    } 
  17. 17 
  18. 18} 

 

責任編輯:武曉燕 來源: 我好困啊
相關推薦

2021-05-11 08:54:59

建造者模式設計

2023-05-05 06:39:52

Java工廠設計模式

2021-10-26 10:40:26

代理模式虛擬

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2021-07-05 22:11:38

MySQL體系架構

2022-08-23 08:00:59

磁盤性能網絡

2023-01-03 08:31:54

Spring讀取器配置

2022-08-26 09:29:01

Kubernetes策略Master

2023-11-28 08:29:31

Rust內存布局

2021-07-02 09:45:29

MySQL InnoDB數據

2021-07-02 08:51:29

源碼參數Thread

2023-03-13 21:38:08

TCP數據IP地址

2021-04-29 10:18:18

循環(huán)依賴數組

2021-10-14 10:22:19

逃逸JVM性能

2021-07-16 22:43:10

Go并發(fā)Golang

2022-03-11 10:21:30

IO系統(tǒng)日志

2023-11-01 09:07:01

Spring裝配源碼

2022-10-20 07:39:26

2021-10-27 09:59:35

存儲
點贊
收藏

51CTO技術棧公眾號

色综合久久悠悠| 中文字幕中文字幕一区三区| 国产黄大片在线观看| 午夜久久福利影院| 777视频在线| 99久久精品国产一区二区三区| 神马影院午夜我不卡影院| 亚洲国产老妈| 国产精品ⅴa在线观看h| 日本成人中文| 久久国产精品第一页| 国产欧美亚洲日本| 亚洲色图官网| 精品动漫av| 成人黄色免费看| 精品国内自产拍在线观看视频 | 依依综合在线| 在线电影院国产精品| 在线观看h片| 欧美日韩性生活| 国产露出视频在线观看| 一本久久综合亚洲鲁鲁五月天| 中文字幕在线免费播放| 狠狠做深爱婷婷久久综合一区| 欧美少妇另类| 欧美日韩国产另类一区| 免费a在线看| 亚洲国产91精品在线观看| 9999在线视频| 揄拍成人国产精品视频| 久久久久久一区二区三区四区别墅 | 厕沟全景美女厕沟精品| 亚洲精品之草原avav久久| 色综合天天色| 欧美黄色性视频| 国产中文精品久高清在线不| 97人人干人人| 奇米四色…亚洲| av免费观看网| 性网站在线免费观看| 亚洲综合成人在线视频| 久久久国产精品| 欧美中文字幕在线播放| 清纯唯美综合亚洲| 九色综合日本| 丁香激情综合五月| 欧美狂欢多p性派对| 五月综合激情网| 老司机免费在线视频| 精品中文字幕久久久久久| 2020国产精品小视频| 欧美孕妇性xx| 伊人成人网在线看| 国产91视频一区| 亚洲精品第1页| 污污的网站在线免费观看| 久久艳片www.17c.com| 日韩专区精品| 色爽爽爽爽爽爽爽爽| 欧美激情中文不卡| 国产午夜精品一区理论片| 亚洲精品97久久| 国产精品网站在线看| 国产精品一区二区a| 成人av午夜影院| 欧美老女人性开放| 一区二区三区四区视频免费观看| 亚洲品质视频自拍网| 狠狠色丁香婷婷综合久久片| 成人在线免费观看视频网站| 伊人婷婷欧美激情| 青青草原国产在线| 青青草一区二区| 久久精品国产网站| 韩国97影院| 欧美日韩精选| 久久77777| 国产一区二区三区av在线| 久草成人在线| 中国成人亚色综合网站| 伊人婷婷欧美激情| 色偷偷偷在线视频播放| 国产成人精品在线| 国产一区二区在线观看视频| 免费在线观看麻豆视频| 国产亚洲精品一区二555| 色婷婷色综合| 亚洲人精品午夜射精日韩 | 中国一级大黄大黄大色毛片| 亚洲成人黄色影院| 影音成人av| 狠狠色噜噜狠狠狠狠色吗综合| 国产嫩草影院久久久久| 国产精品蜜芽在线观看| 成人网页在线免费观看| 国产视频不卡一区| 美女91在线看| 99视频免费观看蜜桃视频| 久久久亚洲国产美女国产盗摄| 久草中文在线| 国产精品久久久久久久久粉嫩av | 99热这里都是精品| av网址在线看| 91在线免费视频| 欧美国产亚洲另类动漫| 欧美精品videosex| 久久草.com| 日本高清成人免费播放| 九九精品在线| 欧美一级特黄a| 中日韩美女免费视频网址在线观看| 狠狠入ady亚洲精品经典电影| 91极品尤物在线播放国产| 国产亚洲a∨片在线观看| 日韩中文字幕一区二区三区| 青青青免费视频在线2| 欧美做受高潮1| 国产精品色在线观看| 在线视频成人| 黄色一级片在线看| 亚洲一级一级97网| 国产福利电影一区二区三区| 精品众筹模特私拍视频| 亚洲欧洲一二三| 日韩欧美高清在线| 日韩经典中文字幕一区| 免费a级毛片在线播放| 国产伦精品一区二区三区视频免费| 亚洲成人7777| 999久久久91| 精品久久久久一区二区三区| 国产精品爱久久久久久久| 中文字幕综合网| 国产91一区| 一级片在线免费看| 99国产超薄丝袜足j在线观看 | 国产视频久久久久| 精品无人码麻豆乱码1区2区| 日本在线观看高清完整版| 欧美精品久久| 日韩精品一区二区在线观看| 天堂蜜桃一区二区三区| av美女在线观看| 国产激情片在线观看| 一区二区三区国产视频| www.色综合.com| 在线播放一区二区精品视频| 亚洲欧美自拍另类日韩| 日韩女优人人人人射在线视频| 亚洲免费av网站| 日本久久综合| av男人的天堂在线| 亚洲欧洲日本国产| 久久国产一区二区三区| 久久精品一区二区三区不卡| 台湾亚洲精品一区二区tv| 日韩成人黄色| 日本在线观看一区二区三区| 亚洲欧美在线磁力| 日本一区二区免费在线观看视频| 久久夜色电影| 巨骚激情综合| 亚洲日本欧美在线| 久久成人免费视频| 亚洲国产成人porn| 在线国产欧美| 欧美黑人一区| 成人福利视频在| 国产传媒一区| 一区二区三区天堂av| 亚洲美女区一区| 国产精品试看| 国产乱码精品一区二区三区亚洲人| 黄色免费影视| 日韩精品一区二区三区丰满| 日韩在线观看高清| 精品国产老师黑色丝袜高跟鞋| 久久99伊人| 久久综合给合| 国外av在线| 国产精品免费入口| 91精品国产综合久久香蕉的用户体验 | 日韩欧美激情| 伊人久久青青草| 国产一级黄色录像片| 国产成人精品综合| 久久66热偷产精品| 9l国产精品久久久久麻豆| 飘雪影院手机免费高清版在线观看| 国产专区视频| 日本肉肉一区 | chinese少妇国语对白| 国产成人精品免费久久久久 | 天堂在线视频| 一区二区视频在线观看| 日本精品久久久久影院| 欧美成人精品1314www| 亚洲免费看黄网站| 国产自产2019最新不卡| 欧美日韩国产一区二区三区不卡 |