创建型设计模式一共有4中,分别叫 工厂、单例、构建、原型。创建型设计模式的目标是创建对象实例,其中我认为最简单的当属工厂设计模式。工厂设计模式的宗旨是把对象实例化的过程收集到一处来。
其中工厂模式还可以细分,分别是 简单工厂也叫静态工厂、工厂方法和抽象工厂,其中简单工厂也叫静态工厂是工厂方法的特例,工厂方法是抽象工厂的特例。
工厂方法的目的就是生产对象,也就是封装new的过程。只要你把某个对象的new过程封装到某个类或者某个方法中广义上我们都可以叫工厂方法
例如
public static Object convert() {
return new Object();
}
一般简单工厂就是构造一个工厂类,里面写一个方法获取某个基类对象,至于最后如何生成具体子类的实例,则在该方法内部实现.这就是简单工厂的雏形
简单工厂普通写法
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);
}
}
简单工厂尝试λ写法
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);
}
}
工厂方法
工厂方法和抽象工厂方法也类似,只是换成λ表达式即可。因为λ表达式本质上是一个函数一个方法,所以必然依托于出现在某个类中。