简单工厂模式
不使用设计模式
简单工厂模式是最简单地一种设计模式,简单来说就是创建一个工厂类,使用工厂类可以创建出自己想要的类。
- 按以前的写法,当我们有一个video类时,我们业务场景有两个实体类分别时JavaVideo和pythoVideo
- 我们需要分别使用这两个类时我们一般会这样去写。
- 创建一个抽象类
public abstract class Video {
public abstract void produce();
}
- 继承该抽象类并实现两个类
Java类
public class JavaVideo extends Video{
@Override
public void produce() {
System.out.println("录制Java视频");
}
}
Python类
public class PythonVideo extends Video {
@Override
public void produce() {
System.out.println("录制Python视频");
}
}
- 使用时直接new出来
public static void main(String[] args) {
Video video = new JavaVideo();
video.produce();
}
使用简单工厂模式
创建一个工厂类VideoFactory
- 使用if判断返回需要的类
public Video getVideo(String type){
if ("java" .equalsIgnoreCase(type)){
return new JavaVideo();
}else if ("python" .equalsIgnoreCase(type)){
return new PythonVideo();
}
return null;
}
- 使用反射返回需要的类
//使用反射
public Video getVideo(Class c){
Video video = null;
try {
Class<?> aClass = Class.forName(c.getName());
video = (Video)aClass.newInstance();
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
e.printStackTrace();
}
return video;
}
- 使用工厂方法创建类
- 使用if判断方法
public static void main(String[] args) {
VideoFactory videoFactory = new VideoFactory();
Video video = videoFactory.getVideo("java");
video.produce();
}
- 使用反射方法
public static void main(String[] args) {
VideoFactory videoFactory = new VideoFactory();
Video video = videoFactory.getVideo(JavaVideo.class);
video.produce();
}
在Java中的Calendar类中使用了简单工厂模式