日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Spring bean的實例化方式之靜態工廠和實例工廠的區別

作者:水挼藍 更新時間: 2024-03-08 編程語言

Spring bean的實例化方式之靜態工廠和實例工廠的區別

什么是靜態工廠方法,什么是實例工廠方法?

一、創建對象的方法

首先我們需要知道,創建對象有很多種方法:通過new關鍵詞、使用構造函數、使用clone()、反序列化、工廠模式等,接下來重點講解工廠模式

1.工廠模式:

  1. 工廠模式,它是一種設計模式,可以將對象的創建和使用解耦,通過定義一個對象工廠,可以更加靈活地產生對象。例如,Animal createdAnimal = factory.createAnimal(param1, param2);

2.靜態工廠

工廠初始化之前,工廠中的類已經被實例化放在工廠容器中,就是可以直接通過靜態方法來實例化一個對象。

public class HelloWorldFactory {
    public static HelloWorld getInstance(){
        return new HelloWorld();
    }
}
HelloWorldFactory.getInstance()

創建 HelloWorld 對象直接可以調用getInstance方法來進行實現

3.實例工廠方法

工廠在構造方法初始化時,會將類進行實例化放在工廠中,就是先創建類對象,如何通過對象來調用創建實例對象的方法。

public class HelloWorldFactory {
    public HelloWorld createHelloWorld(){
        return new HelloWorld();
    }
}
HelloWorldFactory helloFactory = new HelloWorldFactory();
helloFactory.createHelloWorld();

創建HelloWorld 對象需要先創建一個HelloWorldFactory工廠類對象,再調用該HelloWorldFactory工廠類的createHelloWorld()方法。

二、如何聲明工廠方法來進行IoC的配置

1.靜態工廠方法聲明

  1. 準備組件類
public class ClientService {
  private static ClientService clientService = new ClientService();
  private ClientService() {}

  public static ClientService createInstance() {
    return clientService;
  }
}
  1. xml配置文件編寫

    文件:resources/spring-bean-01.xml

<bean id="clientService"
  class="examples.ClientService"
  factory-method="createInstance"/>
- class屬性:指定工廠類的全限定符!
- factory-method: 指定靜態工廠方法,注意,該方法必須是static方法。

2.實例工廠方法聲明

接下來我門講解下如何定義使用實例工廠方法創建Bean的配置!

a.準備組件類

a.準備組件類

public class DefaultServiceLocator {

  private static ClientServiceImplclientService = new ClientServiceImpl();

  public ClientService createClientServiceInstance() {
    return clientService;
  }
}

b.xml配置文件編寫

<!-- 將工廠類進行ioc配置 -->
<bean id="serviceLocator" class="examples.DefaultServiceLocator">
</bean>

<!-- 根據工廠對象的實例工廠方法進行實例化組件對象 -->
<bean id="clientService"
  factory-bean="serviceLocator"
  factory-method="createClientServiceInstance"/>
  • factory-bean屬性:指定當前容器工廠Bean的名稱。
  • factory-method: 指定實例工廠方法名。注意,實例方法必須是非static的!

總結:

靜態工廠方法和實例工廠方法都可以用來創建Bean實例,但它們的使用場景不同。如果我們需要創建一個簡單的Bean實例,并且不需要在創建之前進行任何初始化,那么使用靜態工廠方法可能更加方便。但是,如果我們需要在創建Bean實例之前執行一些初始化操作,或者需要動態地創建Bean實例,那么實例工廠方法可能更加適合。

原文鏈接:https://blog.csdn.net/weixin_62075792/article/details/136438888

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新