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

輕松掌握Java工廠模式、抽象工廠模式

 更新時間:2016年10月10日 11:36:14   投稿:lijiao  
這篇文章主要幫助大家輕松掌握Java工廠模式、抽象工廠模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在面向?qū)ο缶幊痰某绦蛟O計中,我們最常見的操作就是new對象,但在創(chuàng)建一個新對象的過程中,會有一些問題,比如我們需要注意創(chuàng)建新對象的實現(xiàn)細節(jié),初始化一些必要的參數(shù)等。這樣會讓我們在講更多的心思放在對象的創(chuàng)建上,而不是程序邏輯的實現(xiàn)上,嚴重拖延了我們的程序開發(fā)效率。工廠模式和抽象工廠模式的出現(xiàn)則完美解決了這個問題,讓我們不再關心對象的創(chuàng)建,更多的在重心放在業(yè)務的實現(xiàn)上。

特點:

    1、程序員直接通過工廠方法創(chuàng)建對象,不再關注創(chuàng)建對象的細節(jié)。

    2、隱藏對象的實現(xiàn)細節(jié),也有利于程序的安全性。

    3、降低程序耦合度。

企業(yè)級開發(fā)和常見框架中的應用:

    Hibernate中的sessionfactory等

工廠模式分類:

簡單工廠模式,程序開發(fā)中最常用的形式,具體代碼如下:

public class Demo {

 /**
 * demo這個類就是我們平時的操作類,在這個類中我們不用去關心 創(chuàng)建汽車的實現(xiàn)細節(jié)
 */
 public static void main(String[] args) {
 Car car = CarFactory.createCar("dz");
 car.run();
 Car car2 = CarFactory.createCar("at");
 car2.run();
 }
}
interface Car{
 public void run();
}

class Dz implements Car{
 public void run() {
 System.out.println("大眾汽車在跑"); 
 }
}

class At implements Car{
 public void run() {
 System.out.println("奧拓汽車在跑");
 }
}

class CarFactory{
 public static Car createCar(String type){
 if("dz".equals(type)){
  System.out.println("創(chuàng)建了一個大眾車");
  return new Dz();
 }
 if("at".equals(type)){
  System.out.println("創(chuàng)建了一個奧拓車");
  return new At();
 }
 return null;
 }
}

工廠方法模式,相比于簡單工廠模式,方便擴展,不必去修改以前的代碼

public class Demo {

 /**
 * demo這個類就是我們平時的操作類,在這個類中我們不用去關心 創(chuàng)建汽車的實現(xiàn)細節(jié)
 */
 public static void main(String[] args) {
 AtFactory atFactory = new AtFactory();
 DzFactory dzFactory = new DzFactory();
 Car at = atFactory.createCar();
 Car dz = dzFactory.createCar();
 at.run();
 dz.run();
 }
}

interface Car {
 public void run();
}

class Dz implements Car {
 public void run() {
 System.out.println("大眾汽車在跑");
 }
}

class At implements Car {
 public void run() {
 System.out.println("奧拓汽車在跑");
 }
}

interface CarFactory {
 Car createCar();
}

class DzFactory implements CarFactory {
 public Car createCar() {
 return new Dz();
 }
}

class AtFactory implements CarFactory {
 public Car createCar() {
 return new At();
 }
}

抽象工廠方法模式:

public class Demo {

 public static void main(String[] args) {
 Car carFactory = new GDCarFactory();
 FDZ fdz = carFactory.createFdz();
 fdz.zhuansu();
 }
}

interface FDZ {
 void zhuansu();
}

class GDFDZ implements FDZ {
 public void zhuansu() {
 System.out.println("高端發(fā)動機轉(zhuǎn)速快");
 }
}

class DDFDZ implements FDZ {

 public void zhuansu() {
 System.out.println("低端發(fā)動機轉(zhuǎn)速慢");
 }

}

interface ZY {
 void shushidu();
}

class GDZY implements ZY {

 public void shushidu() {
 System.out.println("高端座椅很舒適");
 }

}

class DDZY implements ZY {

 public void shushidu() {
 System.out.println("低端座椅不舒適");
 }

}

interface LT {
 void mosundu();
}

class GDLT implements LT {

 public void mosundu() {
 System.out.println("高端輪胎不磨損");
 }

}

class DDLT implements LT {

 public void mosundu() {
 System.out.println("低端輪胎磨損快");
 }

}

interface Car {
 FDZ createFdz();

 ZY createZy();

 LT createLt();
}

class GDCarFactory implements Car{

 @Override
 public FDZ createFdz() {
 return new GDFDZ();
 }

 @Override
 public ZY createZy() {
 return new GDZY();
 }

 @Override
 public LT createLt() {
 return new GDLT();
 }
 
}

class DDCarFactory implements Car{

 @Override
 public FDZ createFdz() {
 return new DDFDZ();
 }

 @Override
 public ZY createZy() {
 return new DDZY();
 }

 @Override
 public LT createLt() {
 return new DDLT();
 }
 
}


三種方法的比較:

1、簡單工廠模式:簡單工廠模式設計簡單,代碼量少,但是可擴展性卻很差,需要擴展時需要修改以前的代碼

2、工廠方法模式:擴展性強,但增加了代碼復雜度

3、抽象工廠模式:抽象工廠模式和工廠模式是不同,抽象工廠模式是對產(chǎn)品分等級,但工廠模式是對產(chǎn)品分類,舉個汽車的例子:工廠模式是生產(chǎn)不同品種的汽車,比如奧迪和大眾,而抽象工廠模式則是對同一款汽車進行等級劃分,比如同樣都是大眾汽車,我們分了高端車和低端車。從方法上講抽象工廠模式更像是工廠模式的細化。一個針對的不不同產(chǎn)品,一個針對的是同一個產(chǎn)品家族。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • G1垃圾回收器在并發(fā)場景調(diào)優(yōu)詳解

    G1垃圾回收器在并發(fā)場景調(diào)優(yōu)詳解

    這篇文章主要為大家介紹了G1垃圾回收器在并發(fā)場景調(diào)優(yōu)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • 利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程

    利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程

    大家應該都知道Idea社區(qū)版本,默認是不能創(chuàng)建SpringBoot項目的,下面這篇文章主要給大家介紹了關于利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • SpringDataRedis簡單使用示例代碼

    SpringDataRedis簡單使用示例代碼

    這篇文章主要介紹了SpringDataRedis簡單使用,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • SpringBoot應用中出現(xiàn)的Full GC問題的場景與解決

    SpringBoot應用中出現(xiàn)的Full GC問題的場景與解決

    這篇文章主要為大家詳細介紹了SpringBoot應用中出現(xiàn)的Full GC問題的場景與解決方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-04-04
  • Java中session存儲Users對象實現(xiàn)記住密碼

    Java中session存儲Users對象實現(xiàn)記住密碼

    這篇文章主要介紹了Java中session存儲Users對象實現(xiàn)記住密碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • springboot2版本無法加載靜態(tài)資源問題解決

    springboot2版本無法加載靜態(tài)資源問題解決

    這篇文章主要介紹了springboot2版本無法加載靜態(tài)資源問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • SpringBoot實現(xiàn)給屬性賦值的兩種方式

    SpringBoot實現(xiàn)給屬性賦值的兩種方式

    在Spring Boot中,配置文件是用來設置應用程序的各種參數(shù)和操作模式的重要部分,Spring Boot支持兩種主要類型的配置文件:properties文件和YAML 文件,這兩種文件都可以用來定義相同的配置,接下來由小編給大家詳細的介紹一下這兩種方式
    2024-07-07
  • java?對象實例化過程中的多態(tài)特性解析

    java?對象實例化過程中的多態(tài)特性解析

    這篇文章主要介紹了java?對象實例化過程中的多態(tài)特性解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java.lang.StackOverflowError出現(xiàn)的原因及解決

    java.lang.StackOverflowError出現(xiàn)的原因及解決

    這篇文章主要介紹了java.lang.StackOverflowError出現(xiàn)的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Jenkins自動化打包為war包

    Jenkins自動化打包為war包

    這篇文章主要介紹了Jenkins自動化打包為war包,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論

上饶市| 会同县| 苍溪县| 分宜县| 太保市| 东城区| 汕头市| 兖州市| 大渡口区| 莱芜市| 汝阳县| 金溪县| 金乡县| 武义县| 宁国市| 横峰县| 锡林浩特市| 光泽县| 甘谷县| 八宿县| 平乐县| 承德县| 龙山县| 晋城| 宾川县| 惠来县| 页游| 新乡县| 六盘水市| 铜梁县| 石景山区| 延津县| 潼关县| 阳信县| 南投市| 武陟县| 普定县| 体育| 济源市| 马龙县| 红河县|