工厂方法模式(Fatory Method Pattern)
提供一个接口,一个可创建一系列相关对象的。无需指定他们的具体类。
一个抽象工厂类,不同的具体工厂产生不同的对象实体。
eg: 冰箱(抽象工厂类) 美的冰箱(实体工厂类) 海尔冰箱(实体工厂类)
eg:
项目结构示意
抽象产品接口:
public interface INote {
void doNote();
}
public interface IVideo {
void doVideo();
}
抽象工厂接口–(生产产品)
public interface ICourseFactory {
INote createNote();
IVideo createVideo();
}
java产品组的产品实现
public class JavaNote implements INote {
@Override
public void doNote() {
System.out.println("==========java课程做笔记");
}
}
public class JavaVideo implements IVideo {
@Override
public void doVideo() {
System.out.println("================java课程下视频观看");
}
}
python产品组的产品实现
public class PythonNote implements INote {
@Override
public void doNote() {
System.out.println("======python课程下---做笔记");
}
}
public class PythonVideo implements IVideo {
@Override
public void doVideo() {
System.out.println("==========python课程下--看视频");
}
}
产品组实现产品创建
public class JavaCourseFactory implements ICourseFactory {
@Override
public INote createNote() {
return new JavaNote();
}
@Override
public IVideo createVideo() {
return new JavaVideo();
}
}
public class PythonCourseFactory implements ICourseFactory {
@Override
public INote createNote() {
return new PythonNote();
}
@Override
public IVideo createVideo() {
return new PythonVideo();
}
}
测试输出
public class TestDemo {
public static void main(String[] args) {
//父类类型的子类对象--创建工厂实体
ICourseFactory iCourseFactory = new JavaCourseFactory();
//创建产品对象并调用具体的产品方法
iCourseFactory.createNote().doNote();
iCourseFactory.createVideo().doVideo();
}
}
测试结果
==========java课程做笔记 ================java课程下视频观看
完整输出java产品组下的产品。
类关系图示
–END



