/** File name: AbstractDbComponentFactory.java **/
package abstractfactorypattern;
public abstract class AbstractDbComponentFactory {
public static AbstractDbComponentFactory createDbComponentFactory(String factoryname) {
if (factoryname == "ORACLE") {
return new OracleDbComponentFactory();
}
else if (factoryname == "MYSQL") {
return new MysqlDbComponentFactory();
}
return null ;
}
public abstract AbstractDbComponent createDbComponent();
}
/** File name: AbstractDbComponent.java **/
package abstractfactorypattern;
public abstract class AbstractDbComponent {
public abstract void execute();
}
/** File name: MysqlDbComponentFactory.java **/
package abstractfactorypattern;
public class MysqlDbComponentFactory extends AbstractDbComponentFactory {
public AbstractDbComponent createDbComponent() {
return new MysqlDbComponent() ;
}
}
/** File name: OracleDbComponentFactory.java **/
package abstractfactorypattern;
public class OracleDbComponentFactory extends AbstractDbComponentFactory {
public AbstractDbComponent createDbComponent() {
return new OracleDbComponent() ;
}
}
/** File name: MysqlDbComponent.java **/
package abstractfactorypattern;
public class MysqlDbComponent extends AbstractDbComponent {
public MysqlDbComponent() {
System.out.println("Creating MYSQL DB Component");
}
public void execute() {
System.out.println("MYSQL: Executing using MysqlDbComponent") ;
}
}
/** File name: OracleDbComponent.java **/
package abstractfactorypattern;
public class OracleDbComponent extends AbstractDbComponent {
public OracleDbComponent() {
System.out.println("Creating ORACLE DB Component");
}
public void execute() {
System.out.println("ORACLE: Executing using OracleDbComponent") ;
}
}
/** File name: Main.java **/
package abstractfactorypattern;
public class Main {
public Main() {
}
public static void main(String[] args) {
System.out.println("TEST for oracle component");
AbstractDbComponentFactory dbcomponentfactory =
AbstractDbComponentFactory.createDbComponentFactory("ORACLE");
AbstractDbComponent dbcomponent = dbcomponentfactory.createDbComponent();
dbcomponent.execute();
System.out.println("\n\n\nTEST for Mysql component");
dbcomponentfactory =
AbstractDbComponentFactory.createDbComponentFactory("MYSQL");
dbcomponent = dbcomponentfactory.createDbComponent();
dbcomponent.execute();
}
}
Following output is generated:
TEST for oracle component
Creating ORACLE DB Component
ORACLE: Executing using OracleDbComponent
TEST for Mysql component
Creating MYSQL DB Component
MYSQL: Executing using MysqlDbComponent