设计模式精讲
抽象工厂模式
模式定义:
提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类
//建立连接 interface IConnection{ void connection(); }
//声明sql interface ICommand{ void command(); }
//驱动配置 interface IDBCompant{ IConnection getConnection(); ICommand getCommand(); }
//mysql连接驱动实现 class MysqlConnection implements IConnection{ @Override public void connection() { System.out.println("建立mysql连接"); } }
//mysql命令实现 class MySqlCommand implements ICommand{ @Override public void command() { System.out.println("执行mysql语句"); } }
//mysql相关配置实现 class MysqlDbCompant implements IDBCompant{ @Override public IConnection getConnection() { return new MysqlConnection(); } @Override public ICommand getCommand() { return new MySqlCommand(); } }
public static void main(String[] args) { //利用抽象工厂实现mysql的一套规范 IDBCompant idbCompant = new MysqlDbCompant(); IConnection iConnection = idbCompant.getConnection(); iConnection.connection(); ICommand command = idbCompant.getCommand(); command.command(); //同理可以实现oracle相关规范 }
应用场景: 程序需要处理不同系列的相关产品,但是您不希望它依赖于这些产品的具体类时,可以使用抽象工厂
优点:
1.可以确信你从工厂得到的产品彼此是兼容的。
2.可以避免具体产品和客户端代码之间的紧密耦合。
3.符合单一职责原则
4.符合开闭原则
JDK源码中的应用:
- java.sql.Connection
- java.sql.Driver