设计模式---类之间的关系知多少

简介: 设计模式---类之间的关系知多少

设计模式中的关系总结


在软件系统中,类并不是独立存在的,类与类之间存在各种关系,对于不同类型的关系,UML提供了不同的表示方式。现在来总结梳理下:


一、关联关系


类与类之间最常用的一种关系,是一种结构化的关系,用实线连接有关联关系的对象所对应的类。java中,常将一个类的对象作为另一个类的成员变量。


1.双向关联


1dc618a0ed9580ce8bfa6facb208c08f.png


2.单向关联


5d4c6812c8535adbb050f4ddf2e1bce8.png


3.自关联



46a9d80a6e05e4e3b19d57a0ee70bcdf.png


4.多重性关联


66ba272a0bfc97be54a5fa679e3d5482.png


88b9988b40447cb37c7e3c492d49867f.png


5.聚合关系


聚合(Aggregation)关系表示整体与部分的关系。

1dc618a0ed9580ce8bfa6facb208c08f.png

5d4c6812c8535adbb050f4ddf2e1bce8.png


6.组合关系


组合关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制对象成员的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。


组合关系用带实心菱形的直线表示。

46a9d80a6e05e4e3b19d57a0ee70bcdf.png

66ba272a0bfc97be54a5fa679e3d5482.png


二、依赖关系(Denpendency)


依赖(Denpendency)关系是一种使用关系。

大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。

88b9988b40447cb37c7e3c492d49867f.png

敲黑板:

依赖关系通常通过3种方式来实现。


第一种: 如上图,将一个类的对象作为另一个类中的方法


第二种: 在一个类的方法中将另一个类的对象作为其局部变量


第三种: 在一个类的方法中调用另一个类的静态方法。


三、泛化关系(Generalization)


泛化(Generalization)关系也就是继承关系,用于描述父类与子类之间的关系。

泛化关系用带空心三角形的直线来表示。


80308c27701d3aead18db6c7b167f308.png


四、实现关系(Realization)


在接口中,通常没有属性。而且所有的操作都是抽象的,只有操作的声明,没有操作的实现。


接口之间可以有与类之间关系类似的继承关系和依赖关系。


接口与类之间还存在一种实现(Realization)关系。


这种关系,类实现了接口,类中的操作实现了接口中所声明的操作。


实现关系用带空心三角形的虚线来表示。


1014213c4196c8798c8417b952a8a253.png


20190217105350936.jpg

总结,以上主要介绍了设计模式中的类与类之间存在的各种关系,不同类型的关系,UML如何表示。


相关文章
|
8月前
|
设计模式 存储 uml
C++ 设计模式实战:外观模式和访问者模式的结合使用,派生类访问基类的私有子系统
C++ 设计模式实战:外观模式和访问者模式的结合使用,派生类访问基类的私有子系统
78 1
|
8月前
|
设计模式 缓存 安全
【设计模式】单例模式:确保类只有一个实例
【设计模式】单例模式:确保类只有一个实例
89 0
|
设计模式 安全 Java
JAVA设计模式1:单例模式,确保每个类只能有一个实例
JAVA设计模式1:单例模式,确保每个类只能有一个实例
127 0
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
4月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
60 2
|
6月前
|
设计模式 Go
Go语言设计模式:使用Option模式简化类的初始化
在Go语言中,面对构造函数参数过多导致的复杂性问题,可以采用Option模式。Option模式通过函数选项提供灵活的配置,增强了构造函数的可读性和可扩展性。以`Foo`为例,通过定义如`WithName`、`WithAge`、`WithDB`等设置器函数,调用者可以选择性地传递所需参数,避免了记忆参数顺序和类型。这种模式提升了代码的维护性和灵活性,特别是在处理多配置场景时。
79 8
|
5月前
|
设计模式 存储 安全
18 Java反射reflect(类加载+获取类对象+通用操作+设计模式+枚举+注解)
18 Java反射reflect(类加载+获取类对象+通用操作+设计模式+枚举+注解)
127 0
|
7月前
|
设计模式 安全 Java
Java中的单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点
Java单例模式确保类仅有一个实例,并提供全局访问点。常见实现包括: - 饿汉式:静态初始化,线程安全。 - 懒汉式:延迟初始化,需同步保证线程安全。 - 双重检查锁定:优化懒汉式,减少同步开销。 - 静态内部类:延迟加载,线程安全。 - 枚举:简洁线程安全,不适用于复杂构造。 - 容器实现:如Spring框架,用于依赖注入。选择依据需求,如延迟加载、线程安全和扩展性。
78 10
|
8月前
|
设计模式
设计模式-类适配器模式
设计模式-类适配器模式
46 0
|
8月前
|
设计模式 算法
设计模式之三大类
设计模式之三大类
68 0