1. 定义
提供一个创建一系列相关或者互相依赖对象的接口,而无需指定它们具体的类
2. 实现
定义接口:
interface IConnection{
void connect();
}
interface ICommand{
void command();
}
interface IDatabaseUtils{
IConnection getConnection();
ICommand getCommand();
}
定义实现类:
class MysqlConnection implements IConnection{
@Override
public void connect() {
System.out.println("mysql connect.");
}
}
class MysqlCommand implements ICommand{
@Override
public void command() {
System.out.println("mysql command.");
}
}
class MysqlDatabaseUtils implements IDatabaseUtils{
@Override
public IConnection getConnection() {
return new MysqlConnection();
}
@Override
public ICommand getCommand() {
return new MysqlCommand();
}
}
class OracleConnection implements IConnection{
@Override
public void connect() {
System.out.println("oracle connect.");
}
}
class OracleCommand implements ICommand{
@Override
public void command() {
System.out.println("oracle command");
}
}
class OracleDatabseUtils implements IDatabaseUtils{
@Override
public IConnection getConnection() {
return new OracleConnection();
}
@Override
public ICommand getCommand() {
return new OracleCommand();
}
}
使用:
public static void main(String[] args) {
//mysql
IDatabaseUtils databaseUtils=new MysqlDatabaseUtils();
//oracle
// IDatabaseUtils databaseUtils=new OracleDatabseUtils();
IConnection connection = databaseUtils.getConnection();
connection.connect();
ICommand command = databaseUtils.getCommand();
command.command();
}
3. 应用场景
程序需要处理不同系列的相关产品,但是您不希望它依赖于这些产品的 具体类时, 可以使用抽象工厂