源地址:https://blog.csdn.net/a19881029/article/details/8957441

===================================================

类之间大体分为5种关系:

1,依赖关系(Dependency)

单向,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类,是一种“use a”关系

如果A依赖于B,则B表现为A的局部变量,方法参数,静态方法调用等

  1. public class Person {
  2. public void doSomething(){
  3. Card card = new Card();//局部变量
  4. ....
  5. }
  6. }
  1. public class Person {
  2. public void doSomething(Card card){//方法参数
  3. ....
  4. }
  5. }
  1. public class Person {
  2. public void doSomething(){
  3. int id = Card.getId();//静态方法调用
  4. ...
  5. }
  6. }

2,关联关系(Association)

单向或双向(通常我们需要避免使用双向关联关系),是一种"has a"关系,如果A单向关联B,则可以说A has a B,通常表现为全局变量

  1. public class Person {
  2. public Phone phone;
  3. public void setPhone(Phone phone){
  4. this.phone = phone;
  5. }
  6. public Phone getPhone(){
  7. return phone;
  8. }
  9. }

3,聚合关系(Aggregation)

单向,关联关系的一种,与关联关系之间的区别是语义上的,关联的两个对象通常是平等的,聚合则一般不平等,有一种整体和局部的感觉,实现上区别不大

Class由Student组成,其生命周期不同,整体不存在了,部分依然存在,当前Team解散了,人还在,还可以加入别的组

  1. public class Team {
  2. public Person person;
  3. public Team(Person person){
  4. this.person = person;
  5. }
  6. }

4,组合关系(Composition)

单向,是一种强依赖的特殊聚合关系

Head,Body,Arm和Leg组合成People,其生命周期相同,如果整体不存在了,部分也将消亡

  1. public class Person {
  2. public Head head;
  3. public Body body;
  4. public Arm arm;
  5. public Leg leg;
  6. public Person(){
  7. head = new Head();
  8. body = new Body();
  9. arm = new Arm();
  10. leg = new Leg();
  11. }
  12. }

5,继承关系(Inheritance)

类实现接口,类继承抽象类,类继承父类都属于这种关系

可以分得更细:

实现(Realization):类实现接口属于这种关系

泛化(Generalization):即"is a"关系,类继承抽象类,类继承父类都属于这种关系

参考网址: https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html

最新文章

  1. CI框架整合yar
  2. 预装WIN8系统的电脑安装WIN7的方法
  3. Borg Maze(MST & bfs)
  4. ngcordova 监控网络制式改变
  5. spring-boot配置外部静态资源的方法
  6. DropDownList 绑定数据后 插入一条不属于表中的数据
  7. php 数组 (3) reset() end() count() current() key()
  8. 如何在自己的Activity中去控制EditText的焦点
  9. Dump Checking
  10. Javaweb向服务器上传文件以及从服务器下载文件的方法
  11. LayoutInflater (转)
  12. JavaSE基础知识(5)—面向对象(5.5 this和super关键字)
  13. SQL SERVER 查询与整理索引碎片
  14. 第四章: 4.1 logging模块 | 正则表达式
  15. Linux grep命令使用方法
  16. 万恶之源 - Python基础数据类型三
  17. Python -- 游戏开发 -- PyGame的使用
  18. Oracle数据库基本操作(四) —— PLSQL编程
  19. MySQL入门第二天——记录操作与连接查询
  20. decode-encode --其他使用可能有问题

热门文章

  1. Mybatis ,框架
  2. jsp内置对象pageContext如何在Servlet中获取值
  3. Python 学习笔记(十)Python集合(二)
  4. Redis笔记 -- 在 Centos7.4单机中部署Redis集群(二)
  5. Jupyter Notebook的魔法
  6. Spark运行模式_本地伪集群运行模式(单机模拟集群)
  7. opencv移植(二)
  8. A1092
  9. GDB 单步调试汇编
  10. Jetson tx2 串口通信