<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          設(shè)計(jì)模式——簡(jiǎn)單工廠

          共 2139字,需瀏覽 5分鐘

           ·

          2022-03-24 15:39

          4e0f62fd652fa6034a3d46b1409c73a6.webp





          精選推薦:設(shè)計(jì)模式——觀察者模式設(shè)計(jì)模式——裝飾者模式


          作為工廠模式的入門(mén),簡(jiǎn)單工廠準(zhǔn)確的來(lái)說(shuō)其實(shí)不算是一個(gè)設(shè)計(jì)模式,反而比較像是一種編程習(xí)慣。其通過(guò)將對(duì)象的創(chuàng)建細(xì)節(jié)提取到一個(gè)特有的類(lèi),這個(gè)我們稱(chēng)之為工廠類(lèi),來(lái)完成對(duì)象創(chuàng)建與業(yè)務(wù)功能的解耦。提取出來(lái)的工廠類(lèi),也可以被多個(gè)模塊復(fù)用。


          類(lèi)圖


          1b9281cfa9a769a3d8470de5682bc1f9.webp


          代碼實(shí)現(xiàn)


          我們還是以咖啡店為例。


          一個(gè)咖啡店可以售賣(mài)多種咖啡,比如摩卡、拿鐵……,而這每種咖啡可以看作是一個(gè)對(duì)象實(shí)例,都需要咖啡店這個(gè)工廠來(lái)創(chuàng)建,客戶只需要將想喝的咖啡告訴咖啡店,咖啡店就可以提供不同的咖啡,如果以后又增加了新的咖啡品種,比如卡布奇諾,也只需要咖啡店更新產(chǎn)品而已,對(duì)于客戶并不要任何的改變就可以提供,同一個(gè)客戶可以享受到更多的咖啡品種。


          而這個(gè)咖啡店呢,可以線下運(yùn)營(yíng),也可以同時(shí)增加線上運(yùn)營(yíng),比如美團(tuán)團(tuán)購(gòu)……這個(gè)就類(lèi)似多個(gè)模塊對(duì)工廠的復(fù)用。


          下面我們用代碼來(lái)實(shí)現(xiàn):


          package com.study.design.Factory.abstractfactory;
          /** * 實(shí)例對(duì)象接口 * 咖啡 */public interface Coffe {
          String coffeName();
          }
          package com.study.design.Factory.abstractfactory;
          /** * 具體實(shí)例類(lèi) * 拿鐵咖啡 */public class LatteCoffe implements Coffe{ @Override public String coffeName() { return "latte"; }}
          package com.study.design.Factory.abstractfactory;
          /** * 具體實(shí)例類(lèi) * 摩卡咖啡 */public class MochaCoffe implements Coffe{ @Override public String coffeName() { return "mocha"; }}
          package com.study.design.Factory.abstractfactory;
          /** * 簡(jiǎn)單工廠類(lèi) */public class SimpleFactory {
          /** * 我們這里簡(jiǎn)單定義 * 如果傳入類(lèi)型為 1, 則表示獲取摩卡咖啡對(duì)象,其他都是拿鐵 * @param type 需要的咖啡類(lèi)型 * @return */ public Coffe productCoffe(int type){ if (type == 1){ return new MochaCoffe(); }else{ return new LatteCoffe(); } }}
          package com.study.design.Factory.abstractfactory;
          /** * 消費(fèi)者 */public class Customer {
          private SimpleFactory simpleFactory; /* 構(gòu)造方法中綁定工廠實(shí)例 * 也可以通過(guò)別的方式,比如 set 方法 */ public Customer(SimpleFactory simpleFactory){ this.simpleFactory = simpleFactory; } /*客戶需求*/ public void drink(int type){ Coffe coffe = simpleFactory.productCoffe(type); System.out.println("I got a cup of " + coffe.coffeName()); }
          }
          package com.study.design.Factory.abstractfactory;
          public class SimpleFactoryTest {
          public static void main(String[] args) { // 創(chuàng)建工廠對(duì)象-咖啡店 SimpleFactory simpleFactory = new SimpleFactory(); // 客戶-消費(fèi)者 Customer customer = new Customer(simpleFactory); // 客戶不同的對(duì)象-不同的咖啡 customer.drink(1); customer.drink(2); }}


          要點(diǎn)

          簡(jiǎn)單工廠,其實(shí)就是將創(chuàng)建對(duì)象的邏輯提取到另外一個(gè)類(lèi),稱(chēng)為工廠類(lèi),使創(chuàng)建對(duì)象的過(guò)程與使用者解耦,使用者通過(guò)傳送不同的參數(shù)給工廠類(lèi),工廠類(lèi)負(fù)責(zé)創(chuàng)建不同的對(duì)象并返回。體現(xiàn)了 Java 對(duì)象封裝的特點(diǎn)。

          瀏覽 46
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  美女肏逼久久 | 亚洲一区豆花视频 | 亚欧天堂在线 | 免费操逼 | 中文字幕国产在线 |