`

设计模式基础之类关系

 
阅读更多

 


 类与类之间的表示关系




 
 依赖关系 :简单的理解,依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。表现在代码层面,为类B作为参数被类A在某个method方法中使用。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。

 

关联关系 :关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。关联关系共分为两种:单向关联和双向关联。所谓单向关联通俗点讲就是“你中有我,但我中未必有你”,比如小明拥有一辆车(注意和小明开车进行区分),但车这个对象可不拥有你啊。和单向关联相对应的是双向关联,也即是”你中有我,我中有你”,比如夫妻就是一种双向关联.

 

聚合关系 : 聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与CPU、公司与员工的关系等,比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,聚合关系以空心菱形加实线箭头表示。

 

组合关系 : 组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,组合关系以实心菱形加实线箭头表示。

 

总结 : 对于继承、实现这两种关系没多少疑问,它们体现的是一种类和类、或者类与接口间的纵向关系。其他的四种关系体现的是类和类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准确定位是很难的。前面也提到,这四种关系都是语义级别的,所以从代码层面并不能完全区分各种关系,但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。

 

  • 依赖关系:工具型  use-a
  • 关联关系:朋友型 
  • 聚合关系:拥有型  contains-a
  • 组合关系:自我型  has-a 

 

  • 大小: 31.4 KB
分享到:
评论

相关推荐

    DesignPattern_BasicKnowledge设计模式之类关系

    "DesignPattern_BasicKnowledge设计模式之类关系"这个主题主要探讨了类之间的交互方式,包括依赖、关联等基本概念,这些都是构建可扩展、可维护的软件系统的基础。 1. **设计模式**:设计模式是对在特定上下文中...

    设计模式之美—学习笔记

    在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    设计模式:可复用面向对象软件的基础--详细书签版

     “[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...

    设计模式基础学习 各种软件设计模式

    ### 设计模式基础学习——构建面向对象软件的艺术 在软件工程领域,设计模式是一种用于解决常见问题的模板或指南,特别是在面向对象编程中。本文旨在深入探讨设计模式的基础概念及其在软件开发中的重要性,根据给定...

    设计模式之我见

    ### 设计模式之我见 #### 设计模式的定义与意义 设计模式(Design Pattern)是一种在软件开发过程中被广泛采用的方法论,它基于一系列反复验证的解决方案,旨在提高代码的可读性、可重用性和可靠性。设计模式是...

    java模式,设计模式,多种设计模式

    2. **基础性**:有些J2EE设计模式实际上是建立在某些软件开发设计模式之上的。 3. **影响性**:软件开发设计模式为J2EE设计模式提供了坚实的基础,其应用将直接影响整个结构的稳定性和可扩展性。 #### 五、设计模式...

    设计模式之禅 设计模式

    《设计模式之禅》这本书深入浅出地介绍了这一主题,旨在帮助程序员提升代码的可读性、可维护性和可扩展性。设计模式并不是具体的代码或库,而是一种通用的解决方案模板,可以在不同的情况下复用,以解决类似的问题。...

    iOS的基本的设计模式

    **Model-View-Controller**(简称MVC)是一种广泛应用于软件工程中的设计模式,在iOS开发中更是被视为核心设计模式之一。该模式的核心理念是将应用程序分为三个相互关联的组成部分: - **Model(模型)**:这部分...

    设计模式:可复用面向对象软件设计基础(附源码)

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。这些模式通过前人的经验总结,为开发人员提供了一种标准化的...所以,深入理解和熟练运用设计模式是每个专业程序员必备的技能之一。

    二十三种设计模式【PDF版】

    的重要理论基础之一。 所以说,GoF 的设计模式是 Java 基础知识和 J2EE 框架知识之间一座隐性的"桥"。为什么说隐性的? GOF 的设计模式是一座隐性的"桥" 因为很多人没有注意到这点,学完 Java 基础语言就直接去学...

    设计模式可复用面向对象软件的基础.pdf

    通过明确界定类和对象间的作用关系及其潜在关联,设计模式还能提升现有系统文档的清晰度和维护效率。简言之,设计模式是加速和优化系统设计的有力工具。 #### 设计模式的构成 每个设计模式通常包括四个核心要素: ...

    设计模式之适配器模式

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,主要解决系统间接口不兼容的问题。适配器模式允许不同接口的类协同工作,通过创建一个适配器对象来转换不兼容的接口,使得原本由于接口不匹配而...

    16丨设计模式基础:不会灵活应用设计模式,你就没有掌握面向对象编程.pdf

    "设计模式基础" 本资源主要讲解了设计模式的基础知识,以及面向对象编程的基本特性和设计模式的精髓。作者首先提出了一个问题,即在面试中经常被问到的问题“你比较熟悉哪些设计模式?”,然后指出单例和工厂模式...

    《设计模式》读书报告

    封装变化是设计模式的核心原则之一,比如策略模式和观察者模式都允许我们在不影响其他部分的情况下改变特定行为。表2列出的设计模式特性可以帮助我们识别那些可以独立变化的部分,确保我们选择的模式能适应未来的...

    java设计模式ppt

    ### Java设计模式详解 在软件开发领域,设计模式是一种被广泛采用的解决方案,用来解决常见的设计问题。设计模式不仅能够帮助开发者写出可复用、可维护的代码,还能提高团队间的沟通效率。以下是对给定文件中提到的...

Global site tag (gtag.js) - Google Analytics