每日总结

一下是我总结的uml相关知识

UML的核心图:

  • 用例图(Use Case Diagrams): 描述系统的功能和用户之间的关系。
  • 类图(Class Diagrams): 描述系统中的类、类之间的关系以及类的属性和方法。
  • 时序图(Sequence Diagrams): 展示系统中对象之间的时序关系,特别适用于描述交互和消息传递。
  • 状态图(State Diagrams): 描述对象在不同状态之间的转换。
  • 活动图(Activity Diagrams): 描述系统中活动的流程,用于建模业务流程、工作流等。

其他常见UML图:

  • 组件图(Component Diagrams): 描述系统中的组件及其相互关系。
  • 部署图(Deployment Diagrams): 描述系统中物理节点(硬件)的布局和关系。
  • 通信图(Communication Diagrams): 类似于时序图,展示对象之间的交互,但强调对象之间的合作。

UML建模原则和概念:

  • 继承和泛化: 类之间的继承关系,用于描述一个类如何从另一个类派生而来。
  • 关联和聚合: 描述类之间的关系,包括强关联、弱关联、聚合和组合关系。
  • 多态: 对象可以以多种形式呈现,使得同一个操作可以以不同的方式作用于不同的对象。

UML工具:

  • 有多种工具可用于创建和编辑UML图,如Enterprise Architect、Visual Paradigm、Lucidchart等。

UML的应用:

  • UML广泛用于软件工程中的系统分析和设计,但也可用于其他领域,如业务流程建模、网络协议设计等。

UML版本:

  • UML经过多个版本的发展,每个版本都引入了新的元素和改进。常见的版本包括UML 1.x、UML 2.0、UML 2.5等。

UML作为一种标准建模语言,为软件开发提供了一种统一的、可视化的方法,有助于降低开发过程中的复杂性,提高沟通效率。

在软件设计中,组合模式是一种结构型设计模式,其主要目的是允许客户端统一处理单个对象和对象组合。组合模式以树形结构组织对象,使得客户端能够一致地处理单个对象和对象的组合。以下是一些常见的组合模式和它们的组合形式:

以下是软件设计的各种组合模式及其介绍:

1.透明组合模式:

2.在透明组合模式中,客户端对单个对象和组合对象使用相同的接口,而无需关心具体是单个对象还是组合对象。这就要求所有的组件都实现相同的接口,包括叶子和容器。

3.安全组合模式: 

4.在安全组合模式中,单个对象和组合对象有不同的接口。客户端需要明确地区分对待单个对象和组合对象。这就意味着容器对象需要提供特定的方法来管理其子对象。

5.树形结构组合模式:

6.这是组合模式的基本形式,其中对象以树形结构组织,根节点是容器,叶子节点是单个对象。客户端通过统一的接口遍历整个树形结构。

7.菜单和菜单项的组合模式:

8.这是一个常见的应用场景,其中菜单可以包含菜单项,而菜单项本身也可以是一个菜单。这种嵌套的结构很好地适用于组合模式。

9.文件系统的组合模式:

 

最后是我对组合模式的总结:

 

组合模式是一种结构型设计模式,旨在将对象组织成树形结构以表示"部分-整体"的层次关系。组合模式使得客户端能够以统一的方式处理单个对象和对象的组合。这种模式对于处理树状结构的对象非常有用,如文件系统、图形用户界面元素等。
在组合模式中,有两种主要的对象类型:

 

1.叶子节点(Leaf): 表示树的最终节点,它不包含其他节点。
2.容器节点(Composite): 表示可以包含其他节点的节点,它可以是叶子节点或其他容器节点的集合。

 

组合模式的关键思想是将叶子节点和容器节点都看作相同类型的对象,它们共享同一套接口。这使得客户端无需区分操作的是单个对象还是组合对象,从而简化了客户端的代码。
下面是一个简单的组合模式的例子,以图形界面元素为例:
// Component 接口
interface UIElement {
void draw();
}

 

// Leaf 叶子节点
class Button implements UIElement {
@Override
public void draw() {
System.out.println("Drawing a button");
}
}

 

// Leaf 叶子节点
class TextBox implements UIElement {
@Override
public void draw() {
System.out.println("Drawing a text box");
}
}

 

// Composite 容器节点
class Panel implements UIElement {
private List<UIElement> children = new ArrayList<>();

 

public void add(UIElement element) {
children.add(element);
}

 

@Override
public void draw() {
System.out.println("Drawing a panel");
for (UIElement child : children) {
child.draw();
}
}
}

 

// Client 客户端代码
public class Client {
public static void main(String[] args) {
UIElement button = new Button();
UIElement textBox = new TextBox();

 

Panel panel = new Panel();
panel.add(button);
panel.add(textBox);

 

panel.draw(); // 绘制整个界面,包括按钮、文本框和面板
}
}

 

在上述例子中,UIElement 是组合模式的统一接口,Button 和 TextBox 是叶子节点,Panel 是容器节点。客户端可以通过统一的方式调用 draw 方法,而无需知道具体是哪种类型的 UI 元素。这种设计使得添加新的元素或者组合更为灵活,同时也让客户端代码更为简洁。

 

10.文件系统也是一个常见的组合模式应用场景。文件夹可以包含文件夹和文件,而文件夹和文件都是文件系统的组件。

11.图形用户界面(GUI)的组合模式: 

12.GUI中,窗口、按钮、文本框等可视化元素可以通过组合模式来组织,使得用户界面的构建更加灵活和可扩展。

13.组合模式与装饰器模式的结合

14.组合模式和装饰器模式可以结合使用,以实现对对象的层次性和动态性的组合。这种结合可以用于创建具有复杂结构的对象,并能够在运行时动态地添加或删除功能。

 

posted @   小白同学321  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示