工厂静态方法
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);
---疼苦的时候 你就是在学习了---