重写设计模式-用λ实现工厂模式


创建型设计模式一共有4中,分别叫 工厂、单例、构建、原型。创建型设计模式的目标是创建对象实例,其中我认为最简单的当属工厂设计模式。工厂设计模式的宗旨是把对象实例化的过程收集到一处来。

其中工厂模式还可以细分,分别是 简单工厂也叫静态工厂、工厂方法和抽象工厂,其中简单工厂也叫静态工厂是工厂方法的特例,工厂方法是抽象工厂的特例。
工厂方法的目的就是生产对象,也就是封装new的过程。只要你把某个对象的new过程封装到某个类或者某个方法中广义上我们都可以叫工厂方法
例如

1
2
3
public static Object convert() {
return new Object();
}

一般简单工厂就是构造一个工厂类,里面写一个方法获取某个基类对象,至于最后如何生成具体子类的实例,则在该方法内部实现.这就是简单工厂的雏形

简单工厂普通写法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class User {

}

class Teacher extends User {

}

class Student extends User {

}

class UserFactory {
public static User getUser(int code) {
switch (code) {
case 2:
return new Student();
default:
return new Teacher();
}
}
}

public class Main {
public static void main(String[] args) {
User student = UserFactory.getUser(1);
}
}

简单工厂尝试λ写法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class User {

}

class Student extends User {

}

class Teacher extends User {

}


public class Main {

public static Function<Integer, User> userFactory = code -> {
switch (code) {
case 2:
return new Student();
default:
return new Teacher();
}
};

public static void main(String[] args) {
User student = userFactory.apply(1);
}
}

工厂方法

工厂方法和抽象工厂方法也类似,只是换成λ表达式即可。因为λ表达式本质上是一个函数一个方法,所以必然依托于出现在某个类中。


评论