首页 > 编程知识 正文

软件模块设计准则,数据应用集成设计方法

时间:2023-05-04 17:28:04 阅读:162714 作者:4081

文章目录一、合成复用原则概述二、合成复用与继承复用的优缺点三、合成复用原则码例1、继承复用码例2、合成复用码例

一.合成复用原则介绍

合成复用原则也称为组合复用原则、合成/聚合复用原则、组合/聚合复用原则;

合成复用原则定义 :为了实现软件复用的目的,尽量使用对象的组合/聚合,而不是继承关系;

聚合 是 has-A 关系 ;(关系弱的)表示部分事物的对象(次)与表示集约的对象(主)的生命周期无关,删除了集约的对象,表示部分事物的对象

组合 是 contains-A 关系 ;(关系密切)删除表示组合的对象(主要)时,表示某些内容的对象(下一个)也会一起删除。

继承 是 is-A 关系 ;

电脑与U盘是集约关系,电脑不见了,U盘可以独立存在,也可以连接其他电脑;

a类包含b类引用,当a类对象被丢弃时,b类引用指向的对象也一起消失,没有任何引用指向他,该引用成为垃圾对象并被回收; 在这种情况下是组合

参与销毁“a”类后,将在其他位置引用“b”类对象,而不会销毁“b”类对象。 在这种情况下,该关系是聚合。

二.合成复用和继承复用的优缺点

合成复用优点 :系统更加灵活,降低了类与类之间的耦合度,一个类的变化对其他类的影响比较小;

合成复用缺点 :组合/集约方式建设的系统,需要管理的对象很多

继承复用优点 :可扩展性很容易实现。 继承父类后,父类的所有功能都从继承关系进入子类,便于修改和扩展

破坏继承复用缺点 :包,继承向子类暴露了父类的实现细节。 这种复用称为白盒复用;

继承复用称为白盒复用,组合/聚合复用称为黑盒复用;

看不到黑匣子的复用。 例如,在a类中包含b类,而在a类中看不到b的具体实现细节;

三.合成复用原则代码示例

1、复用码继承实例

业务场景 :向数据块添加数据; 获取数据库连接,然后将数据添加到数据库

数据块链接类 :

包合并聚合; /** *块连接* /公共类db connection {公共字符串获取(} { return )数据连接); }} 增加数据类 :

包合并聚合; /** *创建产品*/publicclassproductdaoextendsdbconnection {/* *添加产品*/public void addProduct () /连接string conn=获取super }} 测试类 :

包合并聚合; public class main (publicstaticvoidmain (string [ ] args ) ) productDao=newproductDao; productDao.addProduct (; }} 执行结果 :

2、合成二维码的例子

数据库连接抽象类 :

包合并聚合; /** *块连接*/publicabstractclassdbconnection { publicabstractstringgetconnection (; } Oracle 数据库连接类 :

包合并聚合; /** * Oracle块连接*/publicclassoracleconnectionextendsdbconnection { @ overridepublicstringgetconnection () }

包合并聚合; /** * MySQL块连接*/publicclassmysqlconnectionextendsdbconnection { @ overridepublicstringgetconnection () { return ' mysqlcon

包合并聚合; /** *创建产品* /使用公共类产品连接/** *组合进行数据库连接* /私有dbconnectionconnection; publicproductdao (db connection connection ) { this.connection=connection; } /** *产品*/public void addProduct () /连接string conn=connection.getconnection ) ); system.out.println (使用' conn '增加产品); }} MySQL 数据库连接类 :

包合并聚合; public class main { publicstaticvoidmain [ ] args } { productdaoproductdao=new product Dao (neworacleconnection ) } product Dao }} 插入数据类 :

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。