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


创建型设计模式一共有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);
  }
}

工厂方法

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


评论