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

關(guān)于工廠方法模式的Java實(shí)現(xiàn)

 更新時(shí)間:2022年04月06日 17:33:06   作者:cainiao_23333  
這篇文章主要介紹了關(guān)于工廠方法模式的Java實(shí)現(xiàn)講解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

工廠方法模式簡述

與簡單工廠模式基本相同,只是工廠是一個(gè)抽象的,需要有具體的工廠去實(shí)現(xiàn)它,然后利用這個(gè)工廠生產(chǎn)產(chǎn)品,之所以出現(xiàn)這個(gè)模式是因?yàn)?,簡單工廠模式不符合OCP原則,添加新產(chǎn)品需要在已有的類中添加代碼。

而使用工廠方法模式,需要新產(chǎn)品的時(shí)候,需要?jiǎng)?chuàng)建兩個(gè)類,具體產(chǎn)品類實(shí)現(xiàn)產(chǎn)品接口,具體工廠類實(shí)現(xiàn)工廠接口,滿足OCP原則,但是每增加一個(gè)產(chǎn)品,需要增加兩個(gè)類,會(huì)產(chǎn)生大量的類。

創(chuàng)建步驟

步驟1

創(chuàng)建一個(gè)產(chǎn)品的接口

package com.ly.factory.factorymethod;
/**
?* Car中run方法的抽象
?* liyang 2020-07-10
?*
?* 也可以將其他共有的特性方法放入Car接口
?* 具體的Audi等實(shí)現(xiàn)Car的相應(yīng)方法
?*/
?
public interface Car {
? ? void run();
}

步驟2

創(chuàng)建產(chǎn)品的實(shí)體類

package com.ly.factory.factorymethod;
public class Audi implements Car {
? ? @Override
? ? public void run() {
? ? ? ? System.out.println("奧迪飛馳中");
? ? }
}
package com.ly.factory.factorymethod;
public class Benz implements Car {
? ? @Override
? ? public void run() {
? ? ? ? System.out.println("奔馳飛馳中");
? ? }
}
package com.ly.factory.factorymethod;
public class Byd implements Car {
? ? @Override
? ? public void run() {
? ? ? ? System.out.println("比亞迪飛馳中");
? ? }
}

步驟3

創(chuàng)建一個(gè)抽象工廠類

package com.ly.factory.factorymethod;
/**
?* 抽象的工廠,具有抽象的createCar方法
?* liyang 2020-07-10
?* 具體的AudiFactory類實(shí)現(xiàn)CarFactory
?*/
?
public interface CarFactory {
? ? Car createCar();
}

步驟4

創(chuàng)建抽象工廠的具體實(shí)現(xiàn)工廠

package com.ly.factory.factorymethod;
public class AudiFactory implements CarFactory{
? ? @Override
? ? public Car createCar() {
? ? ? ? return new Audi();
? ? }
}
package com.ly.factory.factorymethod;
public class BenzFactory implements CarFactory{
? ? @Override
? ? public Car createCar() {
? ? ? ? return new Benz();
? ? }
}
package com.ly.factory.factorymethod;
public class BydFactory implements CarFactory{
? ? @Override
? ? public Car createCar() {
? ? ? ? return new Byd();
? ? }
}

步驟5

測試使用上述工廠創(chuàng)建產(chǎn)品,先創(chuàng)建響應(yīng)工廠,然后使用該工廠創(chuàng)造產(chǎn)品

package com.ly.factory.factorymethod;
/**
?* 工廠方法模式的客戶端測試
?* liyang 2020-07-10
?*
?* 增加一個(gè)具體的Car類,比如Benz類,實(shí)現(xiàn)Car接口
?* 需要增加一個(gè)具體的BenzFactory實(shí)現(xiàn)CarFactory
?* 通過增加新類擴(kuò)展功能,不需要更改原有的代碼
?* 因此,滿足OCP原則,但是會(huì)增加很多類,類爆炸?
?* 所以,在一般的開發(fā)中,推薦使用simpleFactory模式
?*
?*/
?
public class Client {
? ? public static void main(String[] args) {
? ? ? ? Car c1 = new AudiFactory().createCar();
? ? ? ? Car c2 = new BenzFactory().createCar();
? ? ? ? Car c3 = new BydFactory().createCar();
? ? ? ??
? ? ? ? c1.run();
? ? ? ? c2.run();
? ? ? ? c3.run();
? ? }
}

結(jié)果:

奧迪飛馳中
奔馳飛馳中
比亞迪飛馳中
 
Process finished with exit code 0

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何用Java實(shí)現(xiàn)啥夫曼編碼

    如何用Java實(shí)現(xiàn)啥夫曼編碼

    在開發(fā)手機(jī)程序時(shí),總是希望壓縮網(wǎng)絡(luò)傳輸?shù)男畔ⅲ詼p少流量。本文僅以哈夫曼編碼為引導(dǎo),拋磚引玉,實(shí)現(xiàn)壓縮功能
    2013-08-08
  • java加密枝術(shù)深入理解

    java加密枝術(shù)深入理解

    java.security包中的MessageDigest類提供了計(jì)算消息摘要的方法,本文將詳細(xì)介紹,需要了解的朋友可以參考下
    2012-11-11
  • java中struts配置

    java中struts配置

    本文給大家詳細(xì)分析了在java項(xiàng)目中配置Struts的方法和示例,十分的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • JAVA如何把數(shù)據(jù)庫的數(shù)據(jù)處理成樹形結(jié)構(gòu)

    JAVA如何把數(shù)據(jù)庫的數(shù)據(jù)處理成樹形結(jié)構(gòu)

    本文介紹了JAVA如何把數(shù)據(jù)庫的數(shù)據(jù)處理成樹形結(jié)構(gòu),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Spring Cloud Gateway + Nacos 實(shí)現(xiàn)動(dòng)態(tài)路由

    Spring Cloud Gateway + Nacos 實(shí)現(xiàn)動(dòng)態(tài)路由

    這篇文章主要介紹了Spring Cloud Gateway + Nacos 實(shí)現(xiàn)動(dòng)態(tài)路由的方法,幫助大家實(shí)現(xiàn)路由信息的自動(dòng)更新,感興趣的朋友可以了解下
    2020-10-10
  • Java 關(guān)鍵字static詳解及實(shí)例代碼

    Java 關(guān)鍵字static詳解及實(shí)例代碼

    這篇文章主要介紹了Java 關(guān)鍵字static詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 利用java判斷字符串中有漢字?(常用正則表達(dá)式)

    利用java判斷字符串中有漢字?(常用正則表達(dá)式)

    最近工作中遇到了一個(gè)需求,需要利用java獲取字符串中的數(shù)字,嘗試幾種方法后發(fā)現(xiàn)利用正則表達(dá)式實(shí)現(xiàn)最為方便,這篇文章主要給大家介紹了關(guān)于如何利用java判斷字符串中有漢字?的相關(guān)資料,文中還分享了一些常用正則表達(dá)式,需要的朋友可以參考下
    2023-10-10
  • Java如何將大文件切割成小文件

    Java如何將大文件切割成小文件

    這篇文章主要為大家詳細(xì)介紹了Java如何將大文件切割成小文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 如何用Dos命令運(yùn)行Java版HelloWorld你知道嗎

    如何用Dos命令運(yùn)行Java版HelloWorld你知道嗎

    這篇文章主要介紹了在dos窗口中編譯和運(yùn)行java文件的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • java接口性能優(yōu)化技巧

    java接口性能優(yōu)化技巧

    這篇文章主要為大家介紹了java接口性能優(yōu)化技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評論

丰顺县| 竹北市| 留坝县| 绿春县| 察雅县| 呼伦贝尔市| 威远县| 浦城县| 历史| 东山县| 怀化市| 屏南县| 张掖市| 六安市| 龙游县| 杭锦后旗| 精河县| 镇原县| 海安县| 夏邑县| 南木林县| 岑巩县| 古蔺县| 九江县| 汶上县| 古丈县| 萍乡市| 永宁县| 泌阳县| 正阳县| 宁武县| 石棉县| 河曲县| 荥经县| 齐齐哈尔市| 铜鼓县| 景泰县| 灌南县| 彭山县| 奎屯市| 五大连池市|