抽象工厂为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定他们的具体类
public class AbstractFactoryTest {
public static void main(String[] args) {
IDatabaseUtils iDatabaseUtils = new OracleDataBaseUtils();
IConnection connection = iDatabaseUtils.getConnection();
connection.connect();
Icommand command = iDatabaseUtils.getCommand();
command.command();
}
}
//可以吧下面两个接口换为抽象方法 然后用不同的类去继承
//手机
interface IConnection{
void connect();
}
//电脑
interface Icommand{
void command();
}
//工厂
interface IDatabaseUtils{
IConnection getConnection();
Icommand getCommand();
}
//小米工厂生产手机
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.");
}
}
//小米工厂生产电脑
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 IDatabaseUtils{
@Override
public IConnection getConnection() {
return new MysqlConnection();
}
@Override
public Icommand getCommand() {
return new MysqlCommand();
}
}
//华为工厂
class OracleDataBaseUtils implements IDatabaseUtils{
@Override
public IConnection getConnection() {
return new OracleConnection();
}
@Override
public Icommand getCommand() {
return new OracleCommand();
}
}
简单工厂方法与工厂方法创建工厂的着眼点为某类具体的产品,某个工厂与某个产品对应,而抽象工厂某个工厂与产品的家族对应,这个工厂可以生产这个品牌家族的一系列产品。