适用场景:前端
优势:ide
缺点:spa
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(); } }
public class Test { public static void main(String[] args) { VideoFactory videoFactory = new PythonVideoFactory(); Video video = videoFactory.getVideo(); video.produce(); } }
可扩展性:
增长一个前端视频:code
public class FEVideo extends Video{ @Override public void produce() { System.out.println("录制FE课程视频"); } }
public class FEVideoFactory extends VideoFactory{ @Override public Video getVideo() { return new FEVideo(); } }
重点:videoFactory把建立具体某个视频的职责交由子类来实现。这里Video是产品,FEVideo、PythonVideo、JavaVideo是实际的产品,VideoFactory是建立者,而FEVideoFactory、PythonVideoFactory、JavaVideoFactory是实际的建立者视频