public class MainClass {
public static void main(String args[]) {
SecureFactory factory;
factory = new SecureFactory();
Connection connection = factory.createConnection("Oracle");
System.out.println("You're connecting with " + connection.description());
}
}
class SecureFactory extends ConnectionFactory {
public Connection createConnection(String type) {
if (type.equals("Oracle")) {
return new SecureOracleConnection();
} else if (type.equals("SQL Server")) {
return new SecureSqlServerConnection();
} else {
return new SecureMySqlConnection();
}
}
}
abstract class Connection {
public Connection() {
}
public String description() {
return "Generic";
}
}
abstract class ConnectionFactory {
public ConnectionFactory() {
}
protected abstract Connection createConnection(String type);
}
class SqlServerConnection extends Connection {
public SqlServerConnection() {
}
public String description() {
return "SQL Server";
}
}
class SecureSqlServerConnection extends Connection {
public SecureSqlServerConnection() {
}
public String description() {
return "SQL Server secure";
}
}
class SecureOracleConnection extends Connection {
public SecureOracleConnection() {
}
public String description() {
return "Oracle secure";
}
}
class SecureMySqlConnection extends Connection {
public SecureMySqlConnection() {
}
public String description() {
return "MySQL secure";
}
}
|