一.什么是组合复用原则
- 组合复用原则:尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的。
- 继承复用破坏了包装,因为继承将超类的实现细节暴露给了子类。由于超类的内部细节常常对子类是透明的,因此又称"白箱"复用。
- 组合是整体与部分的关系,整体离不开部分,部分离开了整体就没有意义。如鸟与它的两双翅膀。是contains-A的关系
- 聚合也是整体与部分的关系,但是整体可以分离部分,部分也可以离开整体,如大雁与雁群。是has-A的关系。
- 组合复用原则可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其它类造成的影响相对较少。
二.代码体现
- 在项目开发中,不可避免的要连接数据库。数据库的分类有多种,如:PostgreSQL,MySQL,Oracle…。
DBConnection
类为抽象类,定义getConnection()
方法获取连接,此时有两种方式实现与数据库连接,既可以定义PostgreSQLConnection
类继承DBConnection
,又可以定义ProductDao
将DBConnection
声明为成员变量,等待具体数据库连接的注入。
public abstract class DBConnection {
public abstract String getConnection();
}
</