这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们不会对外暴露创建对象的逻辑,并且通过使用一个共同的接口来执向新对象。
定义一个创建对象的接口,让子类自己决定实例化那个工厂类,工厂模式使其创建过程延迟到子类进行。
主要解决接口选择的问题
/**
* 通用crud接口
*
* @author 小宇宙
* @version 1.0
* @date 2022/07/29 15:09:41
*/
public interface CRUD {
void save();
void update();
}
/**
* 老师dao
*
* @author 小宇宙
* @version 1.0
* @date 2022/07/29 15:10:38
*/
public class TeacherDao implements CRUD{
@Override
public void save() {
System.out.println("新增老师信息");
}
@Override
public void update() {
System.out.println("更新老师信息");
}
}
/**
* 学生dao
*
* @author 小宇宙
* @version 1.0
* @date 2022/07/29 15:10:38
*/
public class StudentDao implements CRUD{
@Override
public void save() {
System.out.println("新增学生信息");
}
@Override
public void update() {
System.out.println("更新学生信息");
}
}
/**
* 学校工厂
*
* @author 小宇宙
* @version 1.0
* @date 2022/07/29 15:13:24
*/
public class SchoolFactory {
//根据类型返回指定的接口实现类
public static CRUD getCrud(String type) {
if (type.equals("student")) {
return new StudentDao();
} else if (type.equals("teacher")) {
return new TeacherDao();
}
return null;
}
}
/**
* 测试工厂类
*
* @author 小宇宙
* @version 1.0
* @date 2022/07/29 15:16:45
*/
public class FactoryTest {
public static void main(String[] args) {
//获取老师类型
CRUD teacher = SchoolFactory.getCrud("teacher");
teacher.save();
teacher.update();
System.out.println("===============================");
//获取学生类型
CRUD student = SchoolFactory.getCrud("student");
student.save();
student.update();
}
}