欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

輕松掌握J(rèn)ava工廠(chǎng)模式、抽象工廠(chǎng)模式

 更新時(shí)間:2016年10月10日 11:36:14   投稿:lijiao  
這篇文章主要幫助大家輕松掌握J(rèn)ava工廠(chǎng)模式、抽象工廠(chǎng)模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

特點(diǎn):

    1、程序員直接通過(guò)工廠(chǎng)方法創(chuàng)建對(duì)象,不再關(guān)注創(chuàng)建對(duì)象的細(xì)節(jié)。

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

    3、降低程序耦合度。

企業(yè)級(jí)開(kāi)發(fā)和常見(jiàn)框架中的應(yīng)用:

    Hibernate中的sessionfactory等

工廠(chǎng)模式分類(lèi):

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

public class Demo {

 /**
 * demo這個(gè)類(lèi)就是我們平時(shí)的操作類(lèi),在這個(gè)類(lèi)中我們不用去關(guān)心 創(chuàng)建汽車(chē)的實(shí)現(xiàn)細(xì)節(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("大眾汽車(chē)在跑"); 
 }
}

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

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

工廠(chǎng)方法模式,相比于簡(jiǎn)單工廠(chǎng)模式,方便擴(kuò)展,不必去修改以前的代碼

public class Demo {

 /**
 * demo這個(gè)類(lèi)就是我們平時(shí)的操作類(lèi),在這個(gè)類(lèi)中我們不用去關(guān)心 創(chuàng)建汽車(chē)的實(shí)現(xiàn)細(xì)節(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("大眾汽車(chē)在跑");
 }
}

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

interface CarFactory {
 Car createCar();
}

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

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

抽象工廠(chǎng)方法模式:

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ā)動(dòng)機(jī)轉(zhuǎn)速快");
 }
}

class DDFDZ implements FDZ {

 public void zhuansu() {
 System.out.println("低端發(fā)動(dòng)機(jī)轉(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、簡(jiǎn)單工廠(chǎng)模式:簡(jiǎn)單工廠(chǎng)模式設(shè)計(jì)簡(jiǎn)單,代碼量少,但是可擴(kuò)展性卻很差,需要擴(kuò)展時(shí)需要修改以前的代碼

2、工廠(chǎng)方法模式:擴(kuò)展性強(qiáng),但增加了代碼復(fù)雜度

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 實(shí)例分析java對(duì)象的序列化和反序列化

    實(shí)例分析java對(duì)象的序列化和反序列化

    序列化 (Serialization)是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^(guò)程。一般將一個(gè)對(duì)象存儲(chǔ)至一個(gè)儲(chǔ)存媒介,例如檔案或是記億體緩沖等。在網(wǎng)絡(luò)傳輸過(guò)程中,可以是字節(jié)或是XML等格式。而字節(jié)的或XML編碼格式可以還原完全相等的對(duì)象。這個(gè)相反的過(guò)程又稱(chēng)為反序列化
    2018-09-09
  • SpringBoot Controller Post接口單元測(cè)試示例

    SpringBoot Controller Post接口單元測(cè)試示例

    今天小編就為大家分享一篇關(guān)于SpringBoot Controller Post接口單元測(cè)試示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • SpringBoot+SpringSecurity 不攔截靜態(tài)資源的實(shí)現(xiàn)

    SpringBoot+SpringSecurity 不攔截靜態(tài)資源的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot+SpringSecurity 不攔截靜態(tài)資源的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java通過(guò)URL類(lèi)下載圖片的實(shí)例代碼

    Java通過(guò)URL類(lèi)下載圖片的實(shí)例代碼

    這篇文章主要介紹了Java通過(guò)URL類(lèi)下載圖片,文中結(jié)合實(shí)例代碼補(bǔ)充介紹了java通過(guò)url獲取圖片文件的相關(guān)知識(shí),代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • 解決redisTemplate中l(wèi)eftPushAll隱性bug的問(wèn)題

    解決redisTemplate中l(wèi)eftPushAll隱性bug的問(wèn)題

    這篇文章主要介紹了解決redisTemplate中l(wèi)eftPushAll隱性bug的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • MyBatis查詢(xún)緩存實(shí)例詳解

    MyBatis查詢(xún)緩存實(shí)例詳解

    查詢(xún)緩存的使用,主要是為了提高查詢(xún)?cè)L問(wèn)速度。這篇文章主要介紹了MyBatis查詢(xún)緩存,需要的朋友可以參考下
    2017-06-06
  • 解決IDEA 啟動(dòng)Tomcat控制臺(tái)亂碼問(wèn)題

    解決IDEA 啟動(dòng)Tomcat控制臺(tái)亂碼問(wèn)題

    今天在Idea中用Tomcat跑一個(gè)Web項(xiàng)目,啟動(dòng)后,Tomcat日志在控制臺(tái)打印出來(lái)都是亂碼,初次遇到這個(gè)問(wèn)題真的很棘手,今天小編帶領(lǐng)大家一起看看解決方法
    2018-07-07
  • RestTemplate文件上傳下載與大文件流式下載

    RestTemplate文件上傳下載與大文件流式下載

    這篇文章主要為大家介紹了RestTemplate文件上傳下載與大文件流式下載的使用方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步
    2022-03-03
  • 使用IDEA查看jar包及jar包的正確打開(kāi)方式

    使用IDEA查看jar包及jar包的正確打開(kāi)方式

    IDEA 是把 jar 包添加為 Libraries,然后展開(kāi)后即可查看,因?yàn)槭蔷幾g后的 class 文件,所以注釋是沒(méi)有的,今天小編給大家介紹下使用IDEA查看jar包及jar包的正確打開(kāi)方式,感興趣的朋友一起看看吧
    2023-07-07
  • Java的接口調(diào)用時(shí)的權(quán)限驗(yàn)證功能的實(shí)現(xiàn)

    Java的接口調(diào)用時(shí)的權(quán)限驗(yàn)證功能的實(shí)現(xiàn)

    這篇文章主要介紹了Java的接口調(diào)用時(shí)的權(quán)限驗(yàn)證功能的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評(píng)論