合成(组合)/聚合复用原则
Posted linbq1911
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合成(组合)/聚合复用原则相关的知识,希望对你有一定的参考价值。
1.定义:尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的
2.聚合has-A和组合contains-A
3.优点:可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少
4.思考:何时使用合成/聚合、继承?聚合has-A、组合contains-A、继承is-A
5.实例目录package
6.实例UML类图
7.代码
1 package com.geely.design.principle.compositionaggregation; 2 3 public abstract class DBConnection { 4 /*public String getConnection(){ 5 return "mysql数据库连接"; 6 }*/ 7 public abstract String getConnection(); 8 }
1 package com.geely.design.principle.compositionaggregation; 2 3 public class MySQLConnection extends DBConnection{ 4 public String getConnection() { 5 return "MySQL数据库连接"; 6 } 7 }
1 package com.geely.design.principle.compositionaggregation; 2 3 public class PostgreSQLConnection extends DBConnection { 4 public String getConnection() { 5 return "PostgreSQL数据库连接"; 6 } 7 }
1 package com.geely.design.principle.compositionaggregation; 2 3 public class ProductDao{// extends DBConnection 4 private DBConnection dbConnection; 5 6 public void setDbConnection(DBConnection dbConnection) { 7 this.dbConnection = dbConnection; 8 } 9 10 public void addProduct(){ 11 String conn = dbConnection.getConnection(); 12 System.out.println("使用"+conn + "增加产品"); 13 } 14 }
1 package com.geely.design.principle.compositionaggregation; 2 3 public class Test { 4 public static void main(String[] args) { 5 ProductDao productDao = new ProductDao(); 6 productDao.setDbConnection(new MySQLConnection()); 7 productDao.addProduct(); 8 productDao.setDbConnection(new PostgreSQLConnection()); 9 productDao.addProduct(); 10 } 11 }
以上是关于合成(组合)/聚合复用原则的主要内容,如果未能解决你的问题,请参考以下文章