简单工厂

2019-02-14  本文已影响0人  yym_439

定义

由一个工厂对象决定创建出哪一种产品类的实例(类型:创建型)

使用场景:

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

客户端只知道传入工厂累的参数,对于如何创建对象不关心

缺点:违背开闭原则,增加新产品需要修改工厂类的判断逻辑

代码

//抽象产品类

public abstract class Video {

    public abstract voidproduce();

}

//具体产品

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 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 PythonVideo();

        }

        return null;

    }

}

//客户端:

public class Test {

    public static void main(String[] args) {

//        VideoFactory videoFactory = new VideoFactory();

//        Video video = videoFactory.getVideo("java");

//        if(video == null){

//            return;

//        }

//        video.produce();

        VideoFactory videoFactory = new VideoFactory();

        Video video = videoFactory.getVideo(JavaVideo.class);

        if(video == null){

            return;

        }

        video.produce();

    }

}

UML类图

image
上一篇下一篇

猜你喜欢

热点阅读