软件设计七大原则:(七)合成复用原则

ゝ一世哀愁。 2023-10-06 10:44 159阅读 0赞

一、合成复用原则简介

  • 定义:尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的。
  • 聚合has-A和组合contains-A。
  • 优点:可以使系统更加灵活,降低类与类之间的耦合度,一个雷的变化对其他类造成的影响相对较少。

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

  • 何时使用合成/聚合、继承?
  • 聚合has-A、组合contains-A、继承 is-A

二、代码实现

注:以下均为用作示例的伪代码

1.当有多个数据库连接类时,如何扩展?

  1. public class DBConnection {
  2. public String getConnection() {
  3. return "MySQL数据库连接";
  4. }
  5. }
  6. public class ProductDao extends DBConnection{
  7. public void addProduct(){
  8. String conn=super.getConnection();
  9. System.out.println("使用"+conn+"增加产品");
  10. }
  11. }
  12. public class CompositionAggregationTest {
  13. public static void main(String[] args) {
  14. ProductDao productDao = new ProductDao();
  15. productDao.addProduct();
  16. }
  17. }

2.多个连接类时的扩展实现

  1. public abstract class DBConnection {
  2. public abstract String getConnection();
  3. }
  4. public class MySQLConnection extends DBConnection{
  5. @Override
  6. public String getConnection() {
  7. return "MySQL数据库连接";
  8. }
  9. }
  10. public class PostgreSQLConnection extends DBConnection{
  11. @Override
  12. public String getConnection() {
  13. return "PostgreSQL数据库连接";
  14. }
  15. }
  16. public class ProductDao {
  17. private DBConnection dbConnection;
  18. public void setDbConnection(DBConnection dbConnection) {
  19. this.dbConnection = dbConnection;
  20. }
  21. public void addProduct() {
  22. String conn = dbConnection.getConnection();
  23. System.out.println("使用" + conn + "增加产品");
  24. }
  25. }
  26. public class CompositionAggregationTest {
  27. public static void main(String[] args) {
  28. ProductDao productDao = new ProductDao();
  29. productDao.setDbConnection(new PostgreSQLConnection());
  30. productDao.addProduct();
  31. }
  32. }

三、关于对合成复用原则的理解

  1. /**
  2. * 合成复用原则相对简单,总的来说就是对需要的类和接口,进行组合,聚合,继承使其构成一个我们需要的整体,
  3. * 但是注意同时不要肆无忌惮,否则会违背大量的其他原则,对维护和可读性造成较大的不良影响。
  4. */

发表评论

表情:
评论列表 (有 0 条评论,159人围观)

还没有评论,来说两句吧...

相关阅读

    相关 软件设计原则

    注意:这七大设计原则传输的是一种思想,并非要求全部遵循,而是在满足要求的条件下尽量满足原则。 1. 开闭原则 定义:一个软件实体如类、模块、函数应该对扩展开放,对修改关