抽象工厂
课程工厂接口
接口中的产品族分为录制视频和编写手记
public interface ICourseFactory {
Video getVideo(); //录制视频
Article getArticle(); //编写手记
}
工厂中的产品族
视频抽象类
public abstract class Video {
public abstract void produce(); //录制视频方法
}
手记抽象类
public abstract class Article {
public abstract void produce(); //编写手记方法
}
具体实现工厂
Java工厂
public class JavaCourseFactory implements ICourseFactory {
@Override
public Video getVideo() {
return new JavaVideo(); //视频产品
}
@Override
public Article getArticle() {
return new JavaArticle(); //手记产品
}
}
Java工厂的产品族
public class JavaArticle extends Article {
@Override
public void produce() {
System.out.println("编写Java手记");
}
}
public class JavaVideo extends Video {
@Override
public void produce() {
System.out.println("录制Java视频");
}
}
Python工厂
public class PythonCourseFactory implements ICourseFactory {
@Override
public Video getVideo() {
return new PythonVideo();
}
@Override
public Article getArticle() {
return new PythonArticle();
}
}
Python工厂的产品族
public class PythonArticle extends Article {
@Override
public void produce() {
System.out.println("编写Python手记");
}
}
public class PythonVideo extends Video {
@Override
public void produce() {
System.out.println("录制Python课程");
}
}
测试
public class Test {
public static void main(String[] args) {
//Java工厂
ICourseFactory javaCourseFactory = new JavaCourseFactory();
Video javaVideo = javaCourseFactory.getVideo();
javaVideo.produce();
Article javaArticle = javaCourseFactory.getArticle();
javaArticle.produce();
//Python工厂
ICourseFactory pythonCourseFactory = new PythonCourseFactory();
Video pythonVideo = pythonCourseFactory.getVideo();
pythonVideo.produce();
Article pythonArticle = pythonCourseFactory.getArticle();
pythonArticle.produce();
}
}