博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式_07_聚合复用原则
阅读量:4161 次
发布时间:2019-05-26

本文共 1305 字,大约阅读时间需要 4 分钟。

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

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

何时使用合成/聚合、继承

  1. 聚合:has-A
    关系比较弱,聚合关系中,代表部分事物的对象与代表聚合事物的对象生命周期无关,即使删除了聚合对象,也不一定删除了代表部分事物的对象
  2. 组合:contains-A
    关系比较强,组合关系中,一旦删除了组合对象,同时也就删除了代表部分事物的对象
  3. 继承:is-A

示例

public abstract class DBConnection {
public abstract String getConnection();}
public class MySQLConnection extends DBConnection {
@Override public String getConnection() {
return "mysql建立连接"; }}
public class OracleConnection extends DBConnection {
@Override public String getConnection() {
return "oracle建立连接"; }}
public class OperatorDao {
private DBConnection dbConnection; public void setDbConnection(DBConnection dbConnection) {
this.dbConnection = dbConnection; } public void addProduct() {
System.out.println("使用" + dbConnection.getConnection() + "添加商品信息"); }}
public class Test {
public static void main(String[] args) {
OperatorDao operatorDao = new OperatorDao(); operatorDao.setDbConnection(new MySQLConnection()); operatorDao.addProduct(); System.out.println("------------------"); operatorDao.setDbConnection(new OracleConnection()); operatorDao.addProduct(); }}

类图:

在这里插入图片描述
执行结果:
在这里插入图片描述

转载地址:http://ozixi.baihongyu.com/

你可能感兴趣的文章
史上最详细MFC调用mapX5.02.26步骤(附地图测试GST文件)
查看>>
CMFCShellListCtrl使用方法
查看>>
mapnik的demo运行
查看>>
python支持下的mapnik安装
查看>>
milvus手册
查看>>
多目标跟踪的简单理解
查看>>
Near-Online Multi-target Tracking with Aggregated Local Flow Descriptor
查看>>
Joint Tracking and Segmentation of Multiple Targets
查看>>
Subgraph Decomposition for Multi-Target Tracking
查看>>
JOTS: Joint Online Tracking and Segmentation
查看>>
CDT: Cooperative Detection and Tracking for Tracing Multiple Objects in Video Sequences
查看>>
Improving Multi-frame Data Association with Sparse Representations for Robust Near-online Multi-ob
查看>>
Virtual Worlds as Proxy for Multi-Object Tracking Analysis
查看>>
Multi-view People Tracking via Hierarchical Trajectory Composition
查看>>
Online Multi-Object Tracking via Structural Constraint Event Aggregation
查看>>
The Solution Path Algotithm for Identity-Aware Multi-Object Tracking
查看>>
Groupwise Tracking of Crowded Similar-Appearance Targets from Low-Continuity Image Sequences
查看>>
CDTS: Collaborative Detection, Tracking, and Segmentation for Online Multiple Object Segmentation
查看>>
Deep Network Flow for Multi-Object Tracking
查看>>
Multiple People Tracking by Lifted Multicut and Person Re-identification
查看>>