合成(组合/聚合)复用原则
定义
- 尽量使用对象组合,聚合,而不是继承关系达到软件复用的目的
- 聚合has-A的关系,组合是contains-A的关系,继承是is-A的关系
优点
- 可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少
代码示例
/**
* 合成(组合/聚合)复用原则
*/
public class Composition {
public static void main(String[] args) {
ProductDao productDao = new ProductDao();
productDao.setDbConnection(new PostgresSqlConnection());
productDao.addProduct();
}
}
abstract class DBConnection {
public abstract String getConnection();
}
class MysqlConnection extends DBConnection {
@Override
public String getConnection() {
return "Mysql数据链接";
}
}
class PostgresSqlConnection extends DBConnection {
@Override
public String getConnection() {
return "PostgresSql数据链接";
}
}
class ProductDao {
private DBConnection dbConnection;
public void setDbConnection(DBConnection dbConnection) {
this.dbConnection = dbConnection;
}
public void addProduct() {
String conn = dbConnection.getConnection();
System.out.println("使用" + conn + "增加产品");
}
}