栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

简单说设计模式001-类关系

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单说设计模式001-类关系

在实际开发中,针对研发的各个岗位,设计模式都是很重要的,降低耦合、可复用性、可扩展性、可维护性等等,早已是众所周知的特征。
工作越久对设计模式的期待也就越大,也就成为我必须认真对待的原因,重新认识一遍设计模式

一、面向对象类关系

就Java而言,常用来描述类关系的包含多种,其中is-a、has-a和like-a是非常普及的,面向对象的设计关系主要体现的类关系上,依靠接口、抽象类、类以及变量来描绘。

is-a
    is-a描述的是继承/泛化关系,类A is a 类B,表示A完全继承了B的属性及行为,即B是A的父类。A继承于B,B是A的泛化。举例:笔记本、台式机、工作站都属于计算机,老板、员工、学生、老师都属于人。
has-a
    has-a描述的是从属关系,类A has a 类B,表示B是A的一种属性或行为,从而说明B属于A,或者说B是A的组成部分。举例:操作系统是计算机的一部分,无论是winodw或Linux;大脑是人体的一部分。has-a是整体和部分的结合,从这方面说整体和部分的依赖,也可以分为强依赖、弱依赖等。
like-a
    like-a描述的是组合关系,类A like 类B,表示A拥有B的属性及行为的同时还具备其他能力,比如手机具有相机的功能,但同时具备通讯功能。从语言上来说,A是多种接口的共同体,即A实现了多个接口。举例:手机具备通讯、计算机、拍照、摄像等能力。
use-a
    use-a通常被描述为依赖关系,类A use-a 类B,表示A需要使用到B的某种或多种属性或行为,即A依赖了B对象,但这种依赖是一种比较弱的关系。从语言上说类A的一个属性引用了类B举例:程序员需要使用计算机编程;司机需要驾驶卡车运货。
二、UML类图关系

在实际绘制类图的过程中,类与类的关系是重点。类的关系有继承关系(Inheritance)、实现关系(Realization)、依赖关系(Dependency)和关联关系(Association),其中关联关系又可以扩展出聚合关系(Aggregation)、组合关系(Composition)。
泛化关系(Generalization)实际只是继承关系的相反的描述。

继承(Inheritance)

一个类A继承另外一个类B,类A为子类,类B为父类或基类,类A完全拥有类B的属性及行为,又特化了类B的所有属性、行为。在Java语言中,extends关键字标识了继承关系。 实现(Realization)

一个类A实现一个(或多个)接口的功能。在Java语言中,implements关键字标识了实现关系。
依赖(Dependency)

一个类A依赖另外一个类B,即类A在行为上需要使用到类B来实现自己的功能,需要依赖关系是一种弱关系,但类B的改变会影响到类A。在Java语言中,依赖表现为类A的方法中使用到类B,类B是作为形参出现。 关联(Association)

关联关系是一种强依赖,一个类A关联了另一个类B,即类B作为属性被引用到类A中。关联可以是单向也可以是双向的,即B可以引用A也可以被A引用。关联关系又分为一般关联、聚合关联和组合关联。在Java语言中,关联通常使用类的属性表达,即类B作为类A的属性形式。
聚合(Aggregation)

聚合关系是关联关系的一种特例,充分体现了整体和部分的关系,即has-a的关系。聚合关系中的整体和部分是可以分离的,具备一定的独立性和各自的生命周期。既然聚合是关联的一种特例,从现实中举例说明,类似公司和员工的关系。
组合(Composition)

组合关系是一种更强的聚合,或者说是包含,即contains-a的关系。在组合关系中,部分不能脱离整体而独立存在,例如动物与大脑的关系,公司与部门的关系。
三、UML类图元素

在大多数绘制UML类图的工具中,都提供好了绘制的形状,简述一下关系线的表现形式。

继承

实现

依赖

关联

聚合

组合

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781313.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号