定义
提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。
package designModel.AbstractFactory;
public class AbstractFactory {
public static void main(String[] args) {
IDatabaseUtils iDatabaseUtils =new OracleFataBaseUtils();
IConnection connection =iDatabaseUtils.getConnection();
connection.connect();
ICommand command =iDatabaseUtils.getCommand();
command.command();
}
}
// 变化:mysql,oracle
/**
* mysql建立连接方法
*/
class MysqlConnection implements IConnection{
@Override
public void connect() {
System.out.println("mysql数据库已建立连接。。。");
}
}
class OracleConnection implements IConnection{
@Override
public void connect() {
System.out.println("oracle数据库已建立连接。。。");
}
}
/**
* oracle执行命令方法
*/
class OracleCommand implements ICommand{
@Override
public void command() {
System.out.println("oracle执行命令吧");
}
}
/**
* mysql执行命令方法
*/
class MysqlCommand implements ICommand{
@Override
public void command() {
System.out.println("mysql执行命令吧!");
}
}
/**
* mysql抽象工厂实现类
*/
class MysqlDataBaseUtils implements IDatabaseUtils{
@Override
public IConnection getConnection() {
return new MysqlConnection();
}
@Override
public ICommand getCommand() {
return new MysqlCommand();
}
}
/**
* oracle抽象工厂实现类
*/
class OracleFataBaseUtils implements IDatabaseUtils{
@Override
public IConnection getConnection() {
return new OracleConnection();
}
@Override
public ICommand getCommand() {
return new OracleCommand();
}
}
interface IConnection{
void connect();
}
interface ICommand{
void command();
}
interface IDatabaseUtils{
IConnection getConnection();
ICommand getCommand();
}