合成復用原則
合成復用原則的基本要求是:盡量使用 對象 組合/聚合 , 而不是 繼承關系
示例代碼
public class Connection {
public String getConn() {
return "Mysql 數(shù)據(jù)連接";
}
}
public class DataBase extends Connection{
public void update() {
String conn = super.getConn();
System.out.println("獲取" + conn +" 更新數(shù)據(jù)");
}
}
public class Main {
public static void main(String[] args) {
DataBase mysql = new DataBase();
mysql.update();
}
}
像這種情況顶岸,我們在使用繼承順利的得到了 mysql 的數(shù)據(jù)庫連接写半。也能正常的獲得連接蓄拣,并更新數(shù)據(jù)辽故。但是如果我們想換成 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() +" 更新數(shù)據(jù)");
}
public void insert(Connection conn) {
System.out.println("獲取" + conn.getConn() +"插入數(shù)據(jù)");
}
}
public class Main {
public static void main(String[] args) {
DataBase mysql = new DataBase();
mysql.update(new Mysql());
mysql.insert(new Oracle());
}
}
這里我們使用了依賴倒轉的方式來實現(xiàn)了這個功能,同時也滿足了合成復用原則(不使用繼承)