Android 設計模式:(五)工廠方法模式

前言
本文是對《Adroid 源碼設計模式解析與實戰(zhàn)》 何紅輝、關愛民 著 人民郵電出版社所做的讀書筆記。文章是對本書的一些列學習筆記,如若有侵犯到作者權益,還望作者能聯(lián)系我,我會及時下架。
這本書不錯,有興趣的同學可以買原書看看。
感興趣的朋友歡迎加入學習小組QQ群: 193765960。

版權歸作者所有,如有轉(zhuǎn)發(fā),請注明文章出處:https://xiaodanchen.github.io/archives/

相關文章:

Android 設計模式:(一)面向?qū)ο蟮牧笤瓌t
Android 設計模式:(二)單例模式
Android 設計模式:(三)Builder模式
Android 設計模式:(四)原型模式
Android 設計模式:(五)工廠方法模式
Android 設計模式:(六)抽象工廠模式
Android 設計模式:(七)策略模式

1. 工廠方法模式的定義

定義一個用于創(chuàng)建對象的接口,讓子類決定實例化那個類。(將零部件組裝成不同的產(chǎn)品)

2. 工廠方法模式的實現(xiàn)

先說明兩個接口:抽象產(chǎn)品類抽象工廠類
抽象產(chǎn)品類:定義了產(chǎn)品族,同一產(chǎn)品組的產(chǎn)品具有相似的功能,因此可以使用同一個產(chǎn)品線。
抽象工廠類:定義了產(chǎn)品線

2.1 廠長小明的幸福人生

屌絲程序員小明,越來越覺得自己沒有寫代碼的天賦,一狠心開辦了一家汽車廠,主要負責Audi某種車型的組裝,比如Q3、Q5、Q7,于是乎小明找到了技術界的裝逼高手小民幫忙給他設計了汽車廠流水線。
由于Q3、Q5、Q7這類車型,因為內(nèi)部結構差異并不大,所以一條生產(chǎn)線足以應付這3種車型,小民于是采用了工廠方法模式,開玩笑的說我們不生產(chǎn)零件,我們只是零件的組裝工。

源碼

/**
* 抽象產(chǎn)品類:定義該類產(chǎn)品的功能
* 奧迪車
*/
public abstract class AudiCar{
  public abstract void drive();//汽車可以行使
  public abstract void selfNavigation();//汽車可以自動巡航
}

/**
* 抽象工廠類:定義生產(chǎn)某類產(chǎn)品產(chǎn)品線
* 奧迪生產(chǎn)線
*/
public abstract class AudiFactory{
  //生產(chǎn)Audi類車
  public abstract <T extends AudiCar> T createCar(Class<T> clz);
}

產(chǎn)品的具體類型

/**
* Q3
*/
public class AudiQ3 extends AudiCar{
  ...
}
 
/**
* Q3
*/
public class AudiQ5 extends AudiCar{
  ...
}
 
/**
* Q3
*/
public class AudiQ7 extends AudiCar{
  ...
}

建成流水線

public class AudiCarFactory extends AudiFactory{
  @Override
  public <T extends AudiCar> T createCar(Class<T> clz){
    AudiCar car = null;
    try{
      car = (AudiCar)Class.forName(clz.getName()).newInstance();
    }catch(Exception e){
      e.printStackTrace();
    }
    return (T)car;
  }
}

成產(chǎn)

public class Client{
  public static void main(String[] agrs){
    //引進流水線
    AudiFactory factory = new AudiCarFactory();
    //接收訂單
    Class<? extends AudiCar>[] orders = new Class<>[]{AudiQ3.class,AudiQ5.class,AudiQ5.class,AudiQ3.calss,AudiQ7.calss};
    //生產(chǎn)
    for(int i=0,size=orders.lenth; i<size; i++){
      AudiCar car = (AudiCar)factory.createCar(orders[i]);
    }
  }
}

解析

工廠方法模式:根據(jù)具體產(chǎn)品的類型,構建對應的產(chǎn)品線,生產(chǎn)出對應的產(chǎn)品。
工廠方法模式生產(chǎn)的是一類產(chǎn)品組:例如Audi某型號車的不同車款(入門級,舒適級,豪華級,至尊級)。正如上文對工廠模式的解釋,我們不生產(chǎn)零件,我們只是零件的組裝工

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,008評論 25 709
  • 前言本文是對《Adroid 源碼設計模式解析與實戰(zhàn)》 何紅輝、關愛民 著 人民郵電出版社所做的讀書筆記。文章是對本...
    肖丹晨閱讀 587評論 0 1
  • 久違的設計模式系列視頻。之前寫過三篇設計模式。感興趣的可以看看。 單例模式 觀察者模式 策略模式 好了,我們開始正...
    lovesosoi閱讀 726評論 0 4
  • 今天是小雨滴們的生日,可把白云媽媽和烏云奶奶給忙壞了。 它們要請好多客人,太陽公公,閃電與雷電...
    cici寶閱讀 345評論 0 2
  • 1 彪子是我在實習時認識的一個男孩子,因為剛滿十八歲,舉手投足都像個孩子。 并且,他發(fā)自內(nèi)心的認為自己就是個孩子。...
    朝朝有個暮閱讀 571評論 7 11

友情鏈接更多精彩內(nèi)容