静态工厂方法和实例工厂方法

在学习spring bean的实例化方式的时候遇到的一个问题,Spring bean实例化有3种方法
1、构造器生成 2、静态工厂方法 3、实例工厂方法
那么问题来了,什么是静态工厂方法,什么是实例工厂方法?
静态工厂方法:
顾名思义就是直接可以通过静态方法来实例化一个对象

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

创建 HelloWorld 对象直接可以调用getInstance方法来进行实现

实例工厂方法:
就是先创建类对象,如何通过对象来调用创建实例对象的方法

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

一、什么是静态工厂方法?
又叫简单工厂模式,与工厂模式不同,其是通过专门定义一个类来负责创建其他类的实例,其实例通常拥有共同父类,其普遍实现主要依靠Java的反射机制。

二、好处怎么体现?
1、它们有名称
2、它们可以返回原返回类型任意子类型的对象。

public interface Food {

    /**
     * 使得所有食物都有一个共有的introduce方法
     */
    public void introduce();
}
/**
 * 定义食物的子类:鱼
 */
public class Fish implements Food{

    @Override
    public void introduce() {
        System.out.println("i am a fish");
    }
}
/**
 * 食物的子类,水果
 */
public class Fruit implements Food {
    @Override
    public void introduce() {
        System.out.println("i am the fruit");
    }
}
/**
 * 通过反射机制实现的工厂
 */
public class FoodFactory {

    public static Food getFood(String type) {
        Food food = null;
        try {
            food = (Food) Class.forName("info.zhw." + type).newInstance();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return food;
    }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值