创建型设计模式一共有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); } }
|
工厂方法
工厂方法和抽象工厂方法也类似,只是换成λ表达式即可。因为λ表达式本质上是一个函数一个方法,所以必然依托于出现在某个类中。