设计模式:简单工厂模式
定义:由一个工厂对象决定创建出哪一种产品类的实例
适用场景:客户端(应用层)只知道传入工厂类的参数,对于如何创建对象不关心
package com.edward.design.pattern.creational.simplefactory; /** * Created by Edward on 2018/9/1. */ public interface Video { public void produce();}
package com.edward.design.pattern.creational.simplefactory; /** * Created by Edward on 2018/9/1. */ public class JavaVideo implements Video { @Override public void produce() { System.out.println("Java"); } } /** * Created by Edward on 2018/9/1. */ public class VideoFactory { public Video getVideo(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 Video getVideo(String type){ // if("Java".equalsIgnoreCase(type)){ // return new JavaVideo(); // }else if ("Python".equalsIgnoreCase(type)){ // return new Python(); // }else { // return null; // } // } }
package com.edward.design.pattern.creational.simplefactory; /** * Created by Edward on 2018/9/1. */ public class Test { public static void main(String[] args) { VideoFactory videoFactory = new VideoFactory(); Video video = videoFactory.getVideo(Python.class); if (video != null) { video.produce(); } else { System.out.println("nothing"); } } // VideoFactory videoFactory = new VideoFactory(); // Video video = videoFactory.getVideo("python"); // // if(video != null){ // video.produce(); // }else { // System.out.println("nothing"); // } // } }