【一】【设计模式】类关系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是依赖方。

结尾

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

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

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

相关推荐
liu_chunhai6 分钟前
设计模式(3)builder
java·开发语言·设计模式
刷帅耍帅8 分钟前
设计模式-策略模式
设计模式·策略模式
刷帅耍帅5 小时前
设计模式-享元模式
设计模式·享元模式
刷帅耍帅5 小时前
设计模式-模版方法模式
设计模式
刷帅耍帅6 小时前
设计模式-桥接模式
设计模式·桥接模式
MinBadGuy7 小时前
【GeekBand】C++设计模式笔记5_Observer_观察者模式
c++·设计模式
刷帅耍帅8 小时前
设计模式-生成器模式/建造者模式Builder
设计模式·建造者模式
蜡笔小新..1 天前
【设计模式】软件设计原则——开闭原则&里氏替换&单一职责
java·设计模式·开闭原则·单一职责原则
性感博主在线瞎搞1 天前
【面向对象】设计模式概念和分类
设计模式·面向对象·中级软件设计师·设计方法
lucifer3111 天前
JavaScript 中的组合模式(十)
javascript·设计模式