/**
* 抽象工厂模式
* 定义:提供一个创建一系列相关依赖对象接口 而无需指定他们具体的类
* 例子:实现MySQL Orcal 连接原理
* 应用场景:程序需要处理不同系列的相关产品,但是不需要他依赖这些产品的具体类时可以使用抽象工厂
* 优点:
* 1.可以确信从工厂得到的产品彼此兼容
* 2.可以避免具体产品和客户端代码之间的耦合
* 3,符合单一职责原责
* 4.符合开闭原则
*
* @author wangqk
*
*/
public class AbstractFactoryTest {
public static void main(String[] args) {
mysqlDemo();
OrcaleDemo();
}
public static void mysqlDemo() {
IDatabasesUtils dataUtils = new MysqlDataBaseUtils();
IConnection connection = dataUtils.getConnection();
connection.connect();
ICommand command = dataUtils.getCommand();
command.command();
}
public static void OrcaleDemo() {
IDatabasesUtils dataUtils = new OrcaleDataBaseUtils();
IConnection connection = dataUtils.getConnection();
connection.connect();
ICommand command = dataUtils.getCommand();
command.command();
}
}
interface ICommand {
public void command();
}
interface IConnection {
public void connect();
}
interface IDatabasesUtils {
IConnection getConnection();
ICommand getCommand();
}
class MysqlConnection implements IConnection {
@Override
public void connect() {
System.out.println("Mysql connect ");
}
}
class OracleConnection implements IConnection{
@Override
public void connect() {
System.out.println("Oracle connect");
}
}
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");
}
}
class MysqlDataBaseUtils implements IDatabasesUtils {
@Override
public IConnection getConnection() {
return new MysqlConnection();
}
@Override
public ICommand getCommand() {
return new MysqlCommand();
}
}
class OrcaleDataBaseUtils implements IDatabasesUtils{
@Override
public IConnection getConnection() {
return new OracleConnection();
}
@Override
public ICommand getCommand() {
return new OracleCommand();
}
}
抽象工厂模式
最新推荐文章于 2025-06-04 14:39:16 发布