91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java工廠模式是什么意思

發布時間:2021-07-06 10:44:39 來源:億速云 閱讀:185 作者:chen 欄目:大數據

這篇文章主要介紹“Java工廠模式是什么意思”,在日常操作中,相信很多人在Java工廠模式是什么意思問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java工廠模式是什么意思”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

工廠模式:

設計模式是源于生活,人類社會生產從原始的集體生產、私有化、作坊、手工工廠、流水線工程一路發展過來,工廠生產模式成為效率最高的方式。

那么在軟件設計中也參考了這種方式:

工廠模式是我們最常用的實例化對象模式了,是用工廠方法代替new操作的一種模式。著名的Jive論壇 ,就大量使用了工廠模式,工廠模式在Java程序系統可以說是隨處可見。因為工廠模式就相當于創建實例對象的new,我們經常要根據類Class生成實例對象,如A a=new A() 工廠模式也是用來創建實例對象的,所以以后new時就要多個心眼,是否可以考慮使用工廠模式,雖然這樣做,可能多做一些工作,但會給你系統帶來更大的可擴展性和盡量少的修改量。 工廠模式讓對象的使用者無需了解具體實現,只需要通過對象工廠直接拿過來用就行了。

Java構架師學習資料:Java構架師技術棧/高并發/高可用/高性能/源碼解析

簡單工廠模式:

Java工廠模式是什么意思

簡單工廠模式是屬于創建型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬于23種設計模式之一。簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。

工廠(WaterFactory)角色:

簡單工廠模式的核心,它負責實現創建所有實例的內部邏輯。工廠類的創建產品類的方法可以被外界直接調用,創建所需的產品對象。

抽象產品(Water)角色:

簡單工廠模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。

具體產品(冰露、農夫山泉、怡寶)角色:

是簡單工廠模式的創建目標,所有創建的對象都是充當這個角色的某個具體類的實例。

優點:

工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的信息,決定究竟應該創建哪個具體類的對象.通過使用工廠類,外界可以從直接創建具體產品對象的尷尬局面擺脫出來,僅僅需要負責“消費”對象就可以了。而不必管這些對象究竟如何創建及如何組織的.明確了各自的職責和權利,有利于整個軟件體系結構的優化。

缺點:

由于工廠類集中了所有實例的創建邏輯,違反了高內聚責任分配原則,將全部創建邏輯集中到了一個工廠類中;它所能創建的類只能是事先考慮到的,如果需要添加新的類,則就需要改變工廠類了。

簡單工廠模式代碼示例:

package demo;

/**

 * 飲用水抽象產品角色

 * @author OuYang

 *

 */

public interface Water {

       /**

        * 獲取一個產品

        * @return

        */

       public String getWater();

      

}



------------------------------------



package demo;

/**

 * 冰露實現類

 * @author OuYang

 *

 */

public class IceDew implements Water{



       public String getWater() {

             

              return "冰露純凈水";

             

       }

      

}



--------------------------------------

package demo;

/**

 * 怡寶實現類

 * @author OuYang

 *

 */

public class SimpleFactory_Water {

       public Water getWater(String brand) {

              if(brand.equals("冰露")) {

                     return new IceDew();

              }

              if(brand.equals("農夫山泉")) {

                     return new NongFu();

              }

              if(brand.equals("怡寶")) {

                     return new YiBao();

              }

              return null;

       }

}



--------------------------------------------

package simplefactory_demo;



import demo.IceDew;

import demo.SimpleFactory_Water;



public class TestWater {

       public static void main(String[] args) {

             

              //普通new模式

              System.out.println(new IceDew().getWater());

             

              //簡單的工廠生產模式(小作坊)

              //用戶本身不再需要了解生產過程,只需要結果

              SimpleFactory_Water factory = new SimpleFactory_Water();

              System.out.println(factory.getWater("農夫山泉").getWater());

       }

}

在Spring中,beanFactory就是對象工廠,配置<bean .........> 就相當于代碼:

factory.getWater("農夫山泉")

當然,Spring的對象工廠遠遠沒有這么簡單。

工廠方法模式:

在簡單工廠模式中,由于工廠類集中了所有實例的創建邏輯,違反了高內聚責任分配原則,將全部創建邏輯集中到了一個工廠類中;它所能創建的類只能是事先考慮到的,如果需要添加新的類,則就需要改變工廠類了。

很顯然,工廠也應該抽象化,再去實現具體品牌的對象工廠,這樣就可以在工廠實現類豐富更多的參數和功能。分工更細,可維修性也更高。

Java工廠模式是什么意思

import SimpleFactory.Water;



/**

 * 工廠模型

 * @author OuYang

 *

 */

public interface Factory {

       //工廠的產品出口

       Water getWater();

}



--------------------------------------------

package methodfactory;

import SimpleFactory.NongFu;

import SimpleFactory.Water;

/**

 * 農夫山泉生產工廠

 * @author OuYang

 *

 */

public class NongFuFactory implements Factory{



       public Water getWater() {

             

              return new NongFu();

       }



}

--------------------------------------------

package methodfactory;

package abstractfactory;



import SimpleFactory.IceDew;

import SimpleFactory.NongFu;

import SimpleFactory.YiBao;

/**

 * 測試類

 * @author OuYang

 *

 */

public class FactoryTest {

       public static void main(String[] args) {

              System.out.println(new YiBaoFactory().getWater().getWater());

       }

}

抽象工廠模式:

在工廠方法模式中,我們無需new各種各樣的對象來使用,只需要new一個對象工廠即可獲得我們想要的對象。

但是這樣只是解決了功能聚集在同一個工廠的問題,解決了改需求帶來的麻煩,但是我們仍然要new相應的對象工廠,程序的復雜度依然存在。

  • 創建抽象工廠,有公共屬性和抽象方法。

  • 實現類中實現冰露、農夫、怡寶的生產工廠。

  • 這樣既解決的代碼的復雜性,又可以在工廠實現類中設置不同的參數。

Java工廠模式是什么意思

/**

 * 抽象工廠

 * @author OuYang

 *

 */

public abstract class AbstractFactory  {

      

       //公共屬性和邏輯,容量

       int volume;

      

       //獲取怡寶

       public abstract YiBao getYiBao();

       //獲得冰露

       public abstract IceDew getIecDew();

       //獲得農夫山泉

       public abstract NongFu getNongFu();

             

}



-------------------------------

package abstractfactory;



import SimpleFactory.IceDew;

import SimpleFactory.NongFu;

import SimpleFactory.YiBao;



/**

 * 抽象工廠實現類

 * @author OuYang

 *

 */

public class WaterFactory extends AbstractFactory{

       @Override

       public YiBao getYiBao() {

              //設置為1升

              this.volume=1;

              return new YiBao();

       }



       @Override

       public IceDew getIecDew() {

              //設置為2升

              return new IceDew();

       }



       @Override

       public NongFu getNongFu() {

              //設置為3升

              return new NongFu();

       }



}

------------------------------------

package simplefactory_demo;



import abstractfactory.WaterFactory;

/**

*測試類

*/

public class AbstractFactoryTest {

       public static void main(String[] args) {

             

              WaterFactory factory = new WaterFactory();

              System.out.println(factory.getIecDew().getWater());

到此,關于“Java工廠模式是什么意思”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿拉善右旗| 顺平县| 保山市| 大悟县| 资源县| 南皮县| 开江县| 古田县| 盐池县| 隆回县| 博客| 随州市| 景宁| 东辽县| 蕲春县| 西安市| 望奎县| 沂南县| 泸溪县| 龙山县| 韶关市| 瑞安市| 丰县| 招远市| 仙桃市| 苗栗市| 晋江市| 英山县| 两当县| 蒙山县| 丹阳市| 崇礼县| 延长县| 青神县| 北流市| 安平县| 靖远县| 渭南市| 郎溪县| 威远县| 高碑店市|