最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設計模式之抽象工廠模式實例詳解

 更新時間:2017年09月21日 11:26:22   作者:索隆  
這篇文章主要介紹了Java設計模式之抽象工廠模式,結合實例形式分析了抽象工廠模式的概念、功能、定義與使用方法,需要的朋友可以參考下

本文實例講述了Java設計模式之抽象工廠模式。分享給大家供大家參考,具體如下:

具體工廠類:生產創(chuàng)建某一類具體產品對象。

抽象產品類可以使用接口或者父類來描述產品對象的行為特征。

具體產品類就是某一具體的對象。

那么抽象工廠模式和工廠模式的不同之處呢?

其實最大的不同就在于,在產品類的結構更加復雜時,抽象工廠模式針對不同的產品族(就是一類產品對象)定義了不同的行為,也就是在父類或接口中,定義了不同的產生方法。不同的產品族調用各自的創(chuàng)建方法。同時不同的產品族橫向比較,也有可歸類的相同特征,這些特征就具體到某一個工廠中體現(xiàn)了。

例如蘋果公司生產手機和平板電腦。

這明顯是2個不同的產品族。手機和平板電腦就不是同一類產品。所以在工廠中定義工廠的行為時,就需要為這兩種產品族各自設計一個創(chuàng)建方法。

而具體到某一個工廠,它都會生產這兩種產品,這兩種產品橫向比較其實還有共同點,那就是某一時間段的蘋果工廠生產的型號是有規(guī)律的,所以2011年的工廠就不會產生iphone5這個產品對象(因為那時候還沒有iphone5)

和工廠模式比,抽象工廠模式其實更加復雜化了,當產品族只有一個時,自然而然就退化到使用工廠模式了。

設計模式:

抽象工廠類   IAppleFactroy

package org.test.design.abf;
/**
 *
 * @author lushuaiyin
 *
 */
public interface IAppleFactroy {
  IComputer createComputer();
  IMobile createMobile();
}

具體工廠類  AppleFactoryIn2011    AppleFactoryIn2012

package org.test.design.abf;
/**
 *
 * @author lushuaiyin
 *
 */
public class AppleFactoryIn2011 implements IAppleFactroy{
  public IComputer createComputer() {
    return new Pad3();
  }
  public IMobile createMobile() {
    return new Phone4s();
  }
}

package org.test.design.abf;
/**
 *
 * @author lushuaiyin
 *
 */
public class AppleFactoryIn2012 implements IAppleFactroy{
  public IComputer createComputer() {
    return new PadMini();
  }
  public IMobile createMobile() {
    return new Phone5();
  }
}

抽象產品類  IMobile   IComputer

package org.test.design.abf;
public interface IMobile {
  void call();
}

package org.test.design.abf;
public interface IComputer {
  void play();
}

具體產品類   Pad3    PadMini    Phone4s   Phone5

package org.test.design.abf;
public class Pad3 implements IComputer{
  public void play() {
    System.out.println("I am iPad3.");
  }
}

package org.test.design.abf;
public class PadMini implements IComputer{
  public void play() {
    System.out.println("I am iPad Mini.");
  }
}

package org.test.design.abf;
public class Phone4s implements IMobile {
  public void call() {
    System.out.println("I am IPhone 4s.");
  }
}

package org.test.design.abf;
public class Phone5 implements IMobile {
  public void call() {
    System.out.println("I am IPhone 5.");
  }
}

測試:

package org.test.design.abf;
public class TestMain {
  /**
   * @param args
   */
  public static void main(String[] args) {
    IAppleFactroy factory2011=new AppleFactoryIn2011();
    IComputer ipad3=factory2011.createComputer();
    ipad3.play();
    IMobile iphone4s=factory2011.createMobile();
    iphone4s.call();
    IAppleFactroy factory2012=new AppleFactoryIn2012();
    IComputer ipad_mini=factory2012.createComputer();
    ipad_mini.play();
    IMobile iphone5=factory2012.createMobile();
    iphone5.call();
  }
}
/*打印
I am iPad3.
I am IPhone 4s.
I am iPad Mini.
I am IPhone 5.
**/

更多java相關內容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設計有所幫助。

相關文章

  • Java線程池實現(xiàn)原理詳解

    Java線程池實現(xiàn)原理詳解

    在面向對象編程中,創(chuàng)建和銷毀對象是很費時間的,因為創(chuàng)建一個對象要獲取內存資源或者其它更多資源,在Java中更是如此,虛擬機將試圖跟蹤每一個對象,以便能夠在對象銷毀后進行垃圾回收,本文將對Java線程池實現(xiàn)原理進行詳細介紹,需要的朋友可以參考下
    2023-07-07
  • java中最大的整數(shù)用法分析

    java中最大的整數(shù)用法分析

    這篇文章主要介紹了java中最大的整數(shù)用法,結合具體實例形式分析了java計算類java.math.BigInteger具體使用技巧,需要的朋友可以參考下
    2017-06-06
  • Mybatis-Plus?新增獲取自增列id方式

    Mybatis-Plus?新增獲取自增列id方式

    這篇文章主要介紹了Mybatis-Plus?新增獲取自增列id方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • JavaEE中volatile、wait和notify詳解

    JavaEE中volatile、wait和notify詳解

    這篇文章主要給大家介紹了關于JavaEE中volatile、wait和notify的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-02-02
  • Redis緩存實例分步詳解

    Redis緩存實例分步詳解

    實際開發(fā)中緩存處理是必須的,不可能我們每次客戶端去請求一次服務器,服務器每次都要去數(shù)據(jù)庫中進行查找,為什么要使用緩存?說到底是為了提高系統(tǒng)的運行速度
    2023-04-04
  • spring mvc中@PathVariable / 帶斜杠方式獲取

    spring mvc中@PathVariable / 帶斜杠方式獲取

    這篇文章主要介紹了spring mvc中@PathVariable / 帶斜杠方式獲取,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中的設計模式與7大原則歸納整理

    Java中的設計模式與7大原則歸納整理

    本篇文章主要對Java中的設計模式如,創(chuàng)建型模式、結構型模式和行為型模式以及7大原則進行了歸納整理,需要的朋友可以參考下
    2017-04-04
  • java對接第三方接口的3種常用方式

    java對接第三方接口的3種常用方式

    java語言中調用第三方接口,可以使用的方法有很多,下面這篇文章主要給大家介紹了關于java對接第三方接口的3種常用方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • java瀏覽器文件打包下載過程解析

    java瀏覽器文件打包下載過程解析

    這篇文章主要介紹了java瀏覽器文件打包下載過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • java實現(xiàn)手寫一個簡單版的線程池

    java實現(xiàn)手寫一個簡單版的線程池

    有些人可能對線程池比較陌生,并且更不熟悉線程池的工作原理。本文就來手寫一個簡單版的線程池,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

正蓝旗| 山西省| 民权县| 红原县| 翁源县| 西华县| 沙田区| 汉源县| 库车县| 平顶山市| 沈阳市| 新密市| 揭东县| 加查县| 东乡族自治县| 青龙| 武乡县| 枣强县| 资讯 | 崇仁县| 荆州市| 高邮市| 潢川县| 南汇区| 平邑县| 镇江市| 正宁县| 吉首市| 岳西县| 宁都县| 隆化县| 九龙县| 通化县| 黔江区| 凉城县| 安徽省| 曲水县| 沅陵县| 通道| 克山县| 横山县|