天天看点

【笔记】合成(组合/聚合)复用原则

合成(组合/聚合)复用原则

定义

  • 尽量使用对象组合,聚合,而不是继承关系达到软件复用的目的
  • 聚合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 + "增加产品");
    }
}
           

继续阅读