设计模式精讲
抽象工厂模式
模式定义:
提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类
//建立连接
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