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