package tech.selinux.design.principle.compositionaggregation;
public abstract class DBConnection {
public abstract String getConnection();
}
package tech.selinux.design.principle.compositionaggregation;
public class MySQLConnection extends DBConnection {
@Override
public String getConnection() {
return "MySQL conn";
}
}
package tech.selinux.design.principle.compositionaggregation;
public class PostgreSQLConnection extends DBConnection {
@Override
public String getConnection() {
return "PostgreSQL conn";
}
}
package tech.selinux.design.principle.compositionaggregation;
public class ProductDao{
private DBConnection dbConnection;
public void setDbConnection(DBConnection dbConnection) {
this.dbConnection = dbConnection;
}
public void addProduct() {
String conn = dbConnection.getConnection();
System.out.println("add" + conn);
}
}
package tech.selinux.design.principle.compositionaggregation;
public class Test {
public static void main(String[] args) {
ProductDao productDao = new ProductDao();
productDao.setDbConnection(new PostgreSQLConnection());
productDao.addProduct();
}
}