设计模式七大原则 - 合成复用原则

2022-11-29  本文已影响0人  夹板儿孩

合成复用原则

合成复用原则的基本要求是:尽量使用 对象 组合/聚合 , 而不是 继承关系

示例代码

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());
    }
}

这里我们使用了依赖倒转的方式来实现了这个功能,同时也满足了合成复用原则(不使用继承)

上一篇下一篇

猜你喜欢

热点阅读