合成复用原则
合成复用原则的基本要求是:尽量使用 对象 组合/聚合 , 而不是 继承关系
示例代码
public class Connection {
public String getConn() {
return "Mysql 数据连接";
}
}
public class DataBase extends Connection{
public void update() {
String conn = super.getConn();
System.out.println("获取" + conn +" 更新数据");
}
}
public class Main {
public static void main(String[] args) {
DataBase mysql = new DataBase();
mysql.update();
}
}
像这种情况,我们在使用继承顺利的得到了 mysql 的数据库连接。也能正常的获得连接,并更新数据。但是如果我们想换成 Oracle 连接就完全没有办法
使用合成复用原则更改
public interface Connection {
String getConn();
}
public class Mysql implements Connection{
@Override
public String getConn() {
return "获得 Mysql 连接";
}
}
public class Oracle implements Connection{
@Override
public String getConn() {
return "获得 Oracle 连接";
}
}
public class DataBase{
public void update(Connection conn) {
System.out.println("获取" + conn.getConn() +" 更新数据");
}
public void insert(Connection conn) {
System.out.println("获取" + conn.getConn() +"插入数据");
}
}
public class Main {
public static void main(String[] args) {
DataBase mysql = new DataBase();
mysql.update(new Mysql());
mysql.insert(new Oracle());
}
}
这里我们使用了依赖倒转的方式来实现了这个功能,同时也满足了合成复用原则(不使用继承)
网友评论