一、抽象工厂模式
public class Program {
public static void main(String[] args) {
User user = new User();
IFactory factory = new AccessFactory();
IUser iu = factory.createUser();
iu.insert(user);
iu.getUser(1);
Department department = new Department();
IDepartment iDepartment = factory.createDepartment();
iDepartment.insert(department);
iDepartment.getDepartment(1);
}
}
class User {
private int id;
private int name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getName() {
return name;
}
public void setName(int name) {
this.name = name;
}
}
interface IUser {
void insert(User user);
User getUser(int id);
}
class SqlserverUesr implements IUser {
@Override
public void insert(User user) {
System.out.println("在SQL Server中给User表增加一条记录");
}
@Override
public User getUser(int id) {
System.out.println("在SQL Server中根据id获取user表一条记录");
return null;
}
}
class AccessUesr implements IUser {
@Override
public void insert(User user) {
System.out.println("在Access中给User表增加一条记录");
}
@Override
public User getUser(int id) {
System.out.println("在Access中根据id获取user表一条记录");
return null;
}
}
interface IFactory {
IUser createUser();
IDepartment createDepartment();
}
class SqlServerFactory implements IFactory {
@Override
public IUser createUser() {
return new SqlserverUesr();
}
@Override
public IDepartment createDepartment() {
return new SqlServerDepartment();
}
}
class AccessFactory implements IFactory {
@Override
public IUser createUser() {
return new AccessUesr();
}
@Override
public IDepartment createDepartment() {
return new AccessDepartment();
}
}
class Department {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
interface IDepartment {
void insert(Department department);
Department getDepartment(int id);
}
class SqlServerDepartment implements IDepartment {
@Override
public void insert(Department department) {
System.out.println("在SQL Server中给department表增加一条记录");
}
@Override
public Department getDepartment(int id) {
System.out.println("在SQL Server中根据id获取department表一条记录");
return null;
}
}
class AccessDepartment implements IDepartment {
@Override
public void insert(Department department) {
System.out.println("在Access中给department表增加一条记录");
}
@Override
public Department getDepartment(int id) {
System.out.println("在Access中根据id获取department表一条记录");
return null;
}
}
二、简单工厂改进抽象工厂模式
public class Program {
public static void main(String[] args) {
User user = new User();
IUser iu = DataAccess.createUser();
iu.insert(user);
iu.getUser(1);
Department department = new Department();
IDepartment iDepartment = DataAccess.createDepartment();
iDepartment.insert(department);
iDepartment.getDepartment(1);
}
}
class User {
private int id;
private int name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getName() {
return name;
}
public void setName(int name) {
this.name = name;
}
}
interface IUser {
void insert(User user);
User getUser(int id);
}
class SqlserverUesr implements IUser {
@Override
public void insert(User user) {
System.out.println("在SQL Server中给User表增加一条记录");
}
@Override
public User getUser(int id) {
System.out.println("在SQL Server中根据id获取user表一条记录");
return null;
}
}
class AccessUesr implements IUser {
@Override
public void insert(User user) {
System.out.println("在Access中给User表增加一条记录");
}
@Override
public User getUser(int id) {
System.out.println("在Access中根据id获取user表一条记录");
return null;
}
}
class Department {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
interface IDepartment {
void insert(Department department);
Department getDepartment(int id);
}
class SqlServerDepartment implements IDepartment {
@Override
public void insert(Department department) {
System.out.println("在SQL Server中给department表增加一条记录");
}
@Override
public Department getDepartment(int id) {
System.out.println("在SQL Server中根据id获取department表一条记录");
return null;
}
}
class AccessDepartment implements IDepartment {
@Override
public void insert(Department department) {
System.out.println("在Access中给department表增加一条记录");
}
@Override
public Department getDepartment(int id) {
System.out.println("在Access中根据id获取department表一条记录");
return null;
}
}
class DataAccess {
// private static final String db = "Sqlsever";
private static final String db = "Access";
public static IUser createUser() {
IUser result = null;
switch (db) {
case "Sqlsever":
result = new SqlserverUesr();
break;
case "Access":
result = new AccessUesr();
break;
}
return result;
}
public static IDepartment createDepartment() {
IDepartment result = null;
switch (db) {
case "Sqlsever":
result = new SqlServerDepartment();
break;
case "Access":
result = new AccessDepartment();
break;
}
return result;
}
}