简单工厂

    xiaoxiao2022-07-07  204

    一、适用场景

    1)工厂类负责创建的对象比较少

    2)客户端(应用层)只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心

    二、优点

    只需要传入一个正确的参数,就可以获得你想要的对象,而无需知道细节

    三、缺点

    工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑

    四、代码

    1)

    public abstract class Video { public abstract void produce(); } public class JavaVideo extends Video { @Override public void produce() { System.out.println("java video!"); } } public class PythonVideo extends Video{ @Override public void produce() { System.out.println("python video!"); } } public class VideoFactory { public Video getVideo(String type){ if(type == "java"){ return new JavaVideo(); }else if(type == "python"){ return new PythonVideo(); } return null; } } public class Test { /** * @param args */ public static void main(String[] args) { VideoFactory videoFactory = new VideoFactory(); Video video = videoFactory.getVideo("java"); video.produce(); } }

    2)第二种方式

    public class VideoFactory { public Video getVideo(Class c){ Video video = null; try { video = (Video)Class.forName(c.getName()).newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return video; } } public class Test { /** * @param args */ public static void main(String[] args) { VideoFactory videoFactory = new VideoFactory(); Video video = videoFactory.getVideo(JavaVideo.class); video.produce(); } }

     

    最新回复(0)