本文共 1709 字,大约阅读时间需要 5 分钟。
public abstract class Video { public abstract void produce();}
public class JavaVideo extends Video { @Override public void produce() { System.out.println("Java 课程"); }}
public class PythonVideo extends Video { @Override public void produce() { System.out.println("python 课程"); }}
public class VideoFactory { public Video getVideo1(String type) { if ("java".equals(type)) { return new JavaVideo(); } else if ("python".equals(type)) { return new PythonVideo(); } else { return null; } } //反射方式 public Video getVideo2(Class c) { Video video = null; try { video = (Video) Class.forName(c.getName()).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return video; }}
public class Test { public static void main(String[] args) { VideoFactory factory = new VideoFactory(); Video video = factory.getVideo1("java"); if (null != video) { video.produce(); } System.out.println("-------------------"); Video video2 = factory.getVideo2(JavaVideo.class); if (null != video) { video2.produce(); } }}
JDK源码中单例实现类图:
转载地址:http://lzixi.baihongyu.com/