- 模式定义
提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类(其实就是一系列工厂模式集合到一起)
- 应用场景
程序需要处理不同系列的相关产品,但是您不希望它依赖于这些产品的具体类时,可以使用抽象工厂
- 优点
1.可以确信你从工厂得到的产品彼此是兼容的。
2.可以避免具体产品和客户端代码之间的紧密耦合。
3.符合单一职责原则
4.符合开闭原则
- 示例
package com.yang.abstractFactory; /** * @description: * @author: Bryan * @date: 2021-10-11 11:02 */ public class AbstractFactoryTest { public static void main(String[] args) { IDataBaseUtils utils=new MysqlUtils(); IConnection connect = utils.getConnect(); connect.connect(); ICommand command = utils.getCommand(); command.command(); } } interface IConnection{ void connect(); } class MysqlConnection implements IConnection{ @Override public void connect() { System.out.println("mysql connected...."); } } class OracleConnection implements IConnection{ @Override public void connect() { System.out.println("oracle connected..."); } } interface ICommand{ void command(); } class MysqlCommand implements ICommand{ @Override public void command() { System.out.println("mysql command..."); } } class OracleCommand implements ICommand{ @Override public void command() { System.out.println("oracle command..."); } } interface IDataBaseUtils{ IConnection getConnect(); ICommand getCommand(); } class MysqlUtils implements IDataBaseUtils{ @Override public IConnection getConnect() { return new MysqlConnection(); } @Override public ICommand getCommand() { return new MysqlCommand(); } } class OracleUtils implements IDataBaseUtils{ @Override public IConnection getConnect() { return new OracleConnection(); } @Override public ICommand getCommand() { return new OracleCommand(); } }