工厂方法模式

定义:

定义一个创建对象的接口但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。(创建型)

适用场景

1.创建对象需要大量的重复代码。
2.客户端或者应用层不依赖于产品类实例如何被创建、实现等细节。
3.一个类通过子类来指定创建哪个对象。

优点:

1.用户只需要关心所需产品对应的工厂,无需关心创建细节。
2.加入新的产品符合开闭原则。提高可扩展性。
3.利用类的多态型和里式替换原则,易拓展。

缺点:

1.类的个数容易过多,增加复杂度。
2.增加了系统的抽象和理解难度。

Coding:

抽象出video对象

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 abstract class VideoFactory {
    public abstract Video getVideo();
}

不同工厂实现:

public class JavaVideoFactory extends VideoFactory {
    @Override
    public Video getVideo() {
        return new JavaVideo();
    }
}
public class PythonVideoFactory extends VideoFactory {
    @Override
    public Video getVideo() {
        return new PythonVideo();
    }
}

Test:

public class Test {

    public static void main(String[] args) {
        VideoFactory videoFactory = new JavaVideoFactory();
        Video video = videoFactory.getVideo();
        video.produce();
        VideoFactory pythonVideoFactory = new PythonVideoFactory();
        Video pythonVideo = pythonVideoFactory.getVideo();
        pythonVideo.produce();
    }
}

UML类图:


工厂方法模式_第1张图片
UML类图

工厂方法模式_第2张图片
UML类图
微信公众号欢迎关注.jpg

你可能感兴趣的:(工厂方法模式)