一、UML图
二、实例
package com.designPattern.abstractFactory.factory;
import com.designPattern.abstractFactory.entity.DepartmentEntity;
import com.designPattern.abstractFactory.entity.UserEntity;
/**
* Created by ZhangJintao on 2020/7/6.
*/
public interface DBFactory {
UserEntity createUserEntity();
DepartmentEntity createDepartmentEntity();
}
package com.designPattern.abstractFactory.factory;
import com.designPattern.abstractFactory.entity.DepartmentEntity;
import com.designPattern.abstractFactory.entity.MysqlDepartmentEntity;
import com.designPattern.abstractFactory.entity.MysqlUserEntity;
import com.designPattern.abstractFactory.entity.UserEntity;
/**
* Created by ZhangJintao on 2020/7/6.
*/
public class MysqlDBFactory implements DBFactory {
@Override
public UserEntity createUserEntity() {
return new MysqlUserEntity();
}
@Override
public DepartmentEntity createDepartmentEntity() {
return new MysqlDepartmentEntity();
}
}
package com.designPattern.abstractFactory.factory;
import com.designPattern.abstractFactory.entity.DepartmentEntity;
import com.designPattern.abstractFactory.entity.OracleDepartmentEntity;
import com.designPattern.abstractFactory.entity.OracleUserEntity;
import com.designPattern.abstractFactory.entity.UserEntity;
/**
* Created by ZhangJintao on 2020/7/6.
*/
public class OracleDBFactory implements DBFactory {
@Override
public UserEntity createUserEntity() {
return new OracleUserEntity();
}
@Override
public DepartmentEntity createDepartmentEntity() {
return new OracleDepartmentEntity();
}
}
package com.designPattern.abstractFactory.entity;
/**
* Created by ZhangJintao on 2020/7/6.
*/
public interface UserEntity<T extends UserEntity> {
abstract void add(T userEntity);
abstract void delete(T userEntity);
abstract void update(T userEntity);
abstract void select(T userEntity);
}
package com.designPattern.abstractFactory.entity;
/**
* Created by ZhangJintao on 2020/7/6.
*/
public interface DepartmentEntity<T extends DepartmentEntity> {
void add(T departmentEntity);
void delete(T departmentEntity);
void update(T departmentEntity);
void select(T departmentEntity);
}
package com.designPattern.abstractFactory.entity;
/**
* Created by ZhangJintao on 2020/7/6.
*/
public class MysqlUserEntity implements UserEntity<MysqlUserEntity> {
@Override
public void add(MysqlUserEntity userEntity) {
System.out.println("在Mysql库中增加用户表记录");
}
@Override
public void delete(MysqlUserEntity userEntity) {
System.out.println("在Mysql库中删除用户表记录");
}
@Override
public void update(MysqlUserEntity userEntity) {
System.out.println("在Mysql库中更新用户表记录");
}
@Override
public void select(MysqlUserEntity userEntity) {
System.out.println("在Mysql库中查询用户表记录");
}
}
package com.designPattern.abstractFactory.entity;
/**
* Created by ZhangJintao on 2020/7/6.
*/
public class OracleUserEntity implements UserEntity<OracleUserEntity> {
@Override
public void add(OracleUserEntity userEntity) {
System.out.println("在Oracle库中增加用户表记录");
}
@Override
public void delete(OracleUserEntity userEntity) {
System.out.println("在Oracle库中删除用户表记录");
}
@Override
public void update(OracleUserEntity userEntity) {
System.out.println("在Oracle库中更新用户表记录");
}
@Override
public void select(OracleUserEntity userEntity) {
System.out.println("在Oracle库中查询用户表记录");
}
}
package com.designPattern.abstractFactory.entity;
/**
* Created by ZhangJintao on 2020/7/6.
*/
public class OracleDepartmentEntity implements DepartmentEntity<OracleDepartmentEntity> {
@Override
public void add(OracleDepartmentEntity departmentEntity) {
System.out.println("在Oracle库中增加部门表记录");
}
@Override
public void delete(OracleDepartmentEntity departmentEntity) {
System.out.println("在Oracle库中删除部门表记录");
}
@Override
public void update(OracleDepartmentEntity departmentEntity) {
System.out.println("在Oracle库中更新部门表记录");
}
@Override
public void select(OracleDepartmentEntity departmentEntity) {
System.out.println("在Oracle库中查询部门表记录");
}
}
package com.designPattern.abstractFactory.entity;
/**
* Created by ZhangJintao on 2020/7/6.
*/
public class MysqlDepartmentEntity implements DepartmentEntity<MysqlDepartmentEntity> {
@Override
public void add(MysqlDepartmentEntity departmentEntity) {
System.out.println("在Mysql库中增加部门表记录");
}
@Override
public void delete(MysqlDepartmentEntity departmentEntity) {
System.out.println("在Mysql库中删除部门表记录");
}
@Override
public void update(MysqlDepartmentEntity departmentEntity) {
System.out.println("在Mysql库中更新部门表记录");
}
@Override
public void select(MysqlDepartmentEntity departmentEntity) {
System.out.println("在Mysql库中查询部门表记录");
}
}
package com.designPattern.abstractFactory;
import com.designPattern.abstractFactory.entity.DepartmentEntity;
import com.designPattern.abstractFactory.entity.UserEntity;
import com.designPattern.abstractFactory.factory.DBFactory;
import com.designPattern.abstractFactory.factory.MysqlDBFactory;
import com.designPattern.abstractFactory.factory.OracleDBFactory;
/**
* Created by ZhangJintao on 2020/7/6.
*/
public class main {
public static void main(String[] args) {
// DBFactory dbFactory = new MysqlDBFactory();
// 只需修改此行就可以完成数据库的切换
DBFactory dbFactory = new OracleDBFactory();
UserEntity userEntity = dbFactory.createUserEntity();
userEntity.add(null);
userEntity.delete(null);
userEntity.update(null);
userEntity.select(null);
DepartmentEntity departmentEntity = dbFactory.createDepartmentEntity();
departmentEntity.add(null);
departmentEntity.delete(null);
departmentEntity.update(null);
departmentEntity.select(null);
}
}