工厂静态方法

1、什么是静态工厂方法

  在java中,获取一个类最简单的方法就是使用new关键字,通过构造函数来实现对象的创建。

最常见的:

Date date = new Date();

不过在实际开发中,也会经常遇到另一种获取实例的方法:

Calendar calendar = Calendar.getInstance();
Integer number = Integer.valueOf("3");
Fragment fragment = MyFragment.newIntance();

像这样不通过new,而是用一个静态方法来对外提供自身实例的方法,即为我们所说的静态工厂方法。

那么new究竟做了什么?

  当我们使用new来构造一个新的实例时,告诉jvm我们需要一个新的实例。jvm就会自动在内存中开辟一片空间,然后调用构造函数来初始化成员变量,最终把引用返回调用方。

2、静态工厂方法的优势在哪里

1)静态工厂方法可以有名字。对于构造方法来说,构造方法只有一个名字,那就是类名,只能通过参数的类型和数量多少去区分构造方法。而静态工厂方法可,可以根据方法的实际功能去定义名字,能有效使用方法。

2)不用每次被调用时都创建新的对象。有时候外部调用者只需要拿到一个实例,而不关心该实例是否是新的,那么这个时候可以提供一个单例,如果使用工厂方法,就可以很容易的在内部控制,防止创建不必要的对象,减少开销。

3)还有一些,但不是很重要的。。。

3、例子

// 创建一个测试数据
    User tester = new User();
    tester.setName("隔壁老张");
    tester.setAge(16);
    tester.setDescription("我住隔壁我姓张!");
// use tester
    bindUI(tester);
//每次创建一个实例,还要往里面添加数据,会比较麻烦
//下面使用静态工厂方法
static class User{
    String name ;
    int age ;
    String description;
    public static User newTestInstance() {
        User tester = new User();
        tester.setName("隔壁老张");
        tester.setAge(16);
        tester.setDescription("我住隔壁我姓张!");
        return tester;
    }
}
 // 创建一个测试数据
    User tester = User.newTestInstance();
 // use tester
    bindUI(tester);

  

posted @ 2020-02-01 17:50  狮子yang  阅读(289)  评论(0编辑  收藏  举报