【一】【设计模式】类关系UML图

1. 继承 (Generalization)

继承是对象间的一种层次关系,允许子类继承并扩展父类的功能。

UML线:带有空心箭头的直线,箭头指向基类(父类)。

复制代码
java 复制代码
class Parent {
    public void parentMethod() {
        System.out.println("This is a method in the parent class.");
    }
}

class Child extends Parent {
    public void childMethod() {
        System.out.println("This is a method in the child class.");
    }
}

在这个例子中,Child类继承了Parent类,拥有Parent类的方法以及自己的方法。

2. 实现(Implementation)

实现关系指的是类实现接口中声明的方法。

UML线:带有空心箭头的虚线,箭头指向接口。

复制代码
java 复制代码
interface Animal {
    public void eat();
}

class Dog implements Animal {
    public void eat() {
        System.out.println("Dog is eating.");
    }
}

Dog类实现了Animal接口,提供了eat方法的实现。

3. 关联(Association)

关联表示不同类的对象之间的连接。它可以是双向的,也可以是单向的。不是其他的关系,并且两个类有联系,就是关联关系。

UML线:普通的直线,两端可能有箭头,表示关系的方向。箭头或无箭头取决于关系的双向性或单向性。通常会在线旁边标注角色名和/或多重性(比如1..*表示一个到多个)。

双向关联

复制代码
java 复制代码
public class Customer{
    private product[] prodects;

}
public class Product{
    private Customer customer;

}

单向关联

复制代码
java 复制代码
public class Customer{
    private Address address;

}
public class Address{

}

自关联

复制代码
java 复制代码
public class Node{
    private Node subNode;

}

多重关联

复制代码
java 复制代码
public class Form{
    private Button[] buttons;

}

public class Button{

}

一个按钮,与1到1和界面有关。一个界面,与0到多个按钮有关。

4. 聚合(Aggregation)

聚合是一种特殊的关联关系,表示"整体-部分"关系,但部分可以脱离整体单独存在。聚合关系通常使用成员变量来实现,且成员变量的生命周期不由容器对象管理。

UML线:带有空心菱形的直线,菱形在整体的一端,箭头指向部分的一端。

复制代码
java 复制代码
public class Car {
    private Engine engine;
    public Car(Engine engine){
        this.engine=engine;
    }
    public void setEngine(Engine engine){
        this.engine=engine;
    }
}

public class Engine  {

}

5. 组合(Composition)

组合也是一种"整体-部分"关系,但与聚合不同的是,部分不能脱离整体存在。在组合关系中,部分的生命周期由整体管理。

UML线:带有实心菱形的直线,菱形在整体的一端,箭头指向部分的一端。

复制代码
java 复制代码
public class Head{
    private Mouth mouth;
    public Head(){
        mouth=new Mouth();
    }
}
public class Mouth{

}

6. 依赖(Dependency)

依赖表示一个类的实现依赖于另一个类的定义。一个类的实现需要另一个类的协助。

UML线:带有箭头的虚线,箭头指向被使用者,被依赖者。

复制代码
java 复制代码
public class Driver{
    public void drive(Car car){
        car.move();
    }
}

public class Car{
    public void move(){
    
    }

}

Driver需要使用Car类方法,Driver依赖于Car,Car被Driver所依赖。Car被依赖,Driver是依赖方。

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。

同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。

谢谢您的支持,期待与您在下一篇文章中再次相遇!

相关推荐
Yu_Lijing5 小时前
基于C++的《Head First设计模式》笔记——备忘录模式
c++·笔记·设计模式·备忘录模式
无籽西瓜a7 小时前
【西瓜带你学设计模式 | 第二期-观察者模式】观察者模式——推模型与拉模型实现、优缺点与适用场景
java·后端·观察者模式·设计模式
我真会写代码10 小时前
Java程序员常用设计模式详解(实战版)
java·开发语言·设计模式
无籽西瓜a12 小时前
【西瓜带你学设计模式 | 第一期-单例模式】单例模式——定义、实现方式、优缺点与适用场景以及注意事项
java·后端·单例模式·设计模式
cliffordl1 天前
设计模式(python)
python·设计模式
云道轩1 天前
告诉 Claude Code 在项目中遵循特定的编程模式/设计模式和技术栈约束
设计模式·ai·agent·claude code
花间相见1 天前
【Java基础面试题】—— 核心知识点面试题(含答案):语法+集合+JVM+设计模式+算法
java·jvm·设计模式
朱一头zcy1 天前
设计模式入门:最简单的模板方法模式
笔记·设计模式·模板方法模式
君主黑暗1 天前
设计模式-观察者模式
观察者模式·设计模式
砍光二叉树1 天前
【设计模式】结构型-组合模式
设计模式·组合模式