工厂模式
适用场景
- 创建对象需要大量重复的代码
- 应用层不依赖于产品类实例如何被创建实现等细节
- 一个类通过其子类来指定创建哪个对象
优点
- 用户只需要关系所需产品对应的工厂,无需关系创建细节
- 加入新产品符合开闭原则,可提高拓展性
缺点
- 类的个数容易过多,增加复杂度
- 增加了系统的抽象性和理解难度
代码
- 创建一个基础类
public abstract class AbstractVideo {
/**
* 一个行为方法
*/
public abstract void produce();
}
- 创建两个具体类 继承基础类
public class JavaVideo extends AbstractVideo {
@Override
public void produce() {
System.out.println("录制Java视频");
}
}
public class PythonVideo extends AbstractVideo {
@Override
public void produce() {
System.out.println("录制Python视频");
}
}
- 创建一个工厂类基础类
public abstract class VideoFactory {
public abstract AbstractVideo getVideo();
}
- 创建两个具体工厂类 继承基础类
public class JavaVideoFactory extends VideoFactory {
@Override
public AbstractVideo getVideo() {
return new JavaVideo();
}
}
public class PythonVideoFactory extends VideoFactory {
@Override
public AbstractVideo getVideo() {
return new PythonVideo();
}
}
- 测试
/**
* 工厂方法
* @author wang
*/
public class FactoryMethod {
public static void main(String[] args) {
//通过创建对应的工厂创建具体类
VideoFactory videoFactory1 = new JavaVideoFactory();
VideoFactory videoFactory2 = new PythonVideoFactory();
AbstractVideo video1 = videoFactory1.getVideo();
AbstractVideo video2 = videoFactory2.getVideo();
video1.produce();
video2.produce();
}
}
总结
工厂方法通过创建各个具体类的工厂方法简化多次创建类的代码,再次调用时直接通过简单地创建工厂方法即可直接获得想要的方法。
来源:CSDN
作者:qq_26483671
链接:https://blog.csdn.net/qq_26483671/article/details/103865403