开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 21 天,点击查看活动详情”
前言
今天这篇文章的目的是为了提高自己java代码的的素质,所在此分享出来,希望大家也能做到。注:这个是需要一定java知识,新手就收藏起来看就行了。资料来源于 Effective Java这本书。
优点1静态方法有对应的名称
想来我们平时都是使用构造器比较多,但是当我们需要多个构造器时,我们一般的做法就是直接传入不一样的参数,或者将参数的顺序调换。这样的做法当然完全没有问题,但是在开发人员使用时就需要花费多一点的时间理解。但是静态工厂就可以通过名称的设计从而达到通俗易懂的效果。
public static People getKidInstance() {//获取孩子实例
11 return Kid;
12 }
13 public static People getOldInstance() {//获取老人实例
14 return old;
15 }
优点2减少创建重复对象
当我需要一些不可变类即(final 类)时,我们不必每次在构造器中去重复创建一个重复的类。还可以实现单例模式(Singleton),因为我们在静态工厂中可以去返回相同的类。
private static final StaticFactory demo = new StaticFactoryDemo();//私有,静态,final,构造方法实例化对象
3 public static StaticFactory getInstance(){//公有的静态工厂方法,获取实例化对象
4 return demo;
5 }
6 public void printMes(){//普通方法
7 System.out.println("Test Static Factory Class!");
8 }
优点3可以返回原类型所属的子类类型的对象
这个也比较好理解,就拿Java的List举个例子,你可以有以下三种实现方式。像下面这个一般是服务于接口,在以接口为基础的框架中使用较为频繁。
List<String> sStrings1 = new Vector<String>();
List<String> sStrings2 = new ArrayList<String>();
List<String> sStrings3 = new LinkedList<String>();
总结
前面这几种是比较好理解的,接下来该介绍一些比较难理解的优点以及对应的缺点。