设计模式系列(八)23种设计模式-----单例设计模式

UML类图

  1. 用于描述系统中类(对象)本身的组成和类(对象)之间的各种静态关系
  2. 类与类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合

依赖

只要在类中用到了对方,那么他们之间就存在依赖关系,如果没有对方,连编译都无法通过

public class PersonServiceBean {
    private PersonDao personDao;//类
    public void save(Person person){}
    public IDCard getIDCard(Integer personid){}
    public void modify(){
        Department department = new Department();
    }
}
public class PersonDao{}
public class IDCard{}
public class Person{}
public class Department{}
在这里插入图片描述
  • 类中用到了对方
  • 可能是类的成员属性
  • 方法的返回类型
  • 方法接收的参数类型
  • 可能是方法中使用到

泛化

泛化实际上就是类的继承关系,是依赖关系的特例

public abstract class DaoSupport{
    public void save(Object entity){
    }
    public void delete(Object id){
    }
}
public class PersonServiceBean extends Daosupport{}
在这里插入图片描述

泛化其实就是继承关系。如果A类继承了B类,我们就说A和B存在泛化的关系

实现

实现关系实际上就是 A类实现了B类的接口,它也是依赖的关系

public interface PersonService {
    public void delete(Interger id);
    }
public class PersonServiceBean implements PersonService {
    public void delete(Interger id){}
}
在这里插入图片描述

关联关系

关联关系实际上就是 类与类之间的关系,它也是属于依赖关系的一种
关联具有 导航性 :即双向关系或单向关系
关联具有多重性:一对一 、一对多、多对多

聚合关系

聚合(Aggregation)关系表示的就是 整体和部分的关系,整体和部分可以分开存在。聚合关系是 关联关系的特例,所以聚合也有关联的 导航性与多重性

例子:如一台电脑由键盘和鼠标 显示器等组成;组成电脑的各个配件是可以从电脑上分离出来的


在这里插入图片描述

组合关系

组合关系:与聚合关系一样,也是 整体与部分 的关系,但是 整体与部分不可分开,聚合关系中,整体与部分可分开存在
例如:在程序实体类中 Person 类(人) 与 IDCard 类(身份证)、 Head 类(头)。其中 Person 与 Head 就是组合关系,人有头,但是头不能离开人,人不能缺少头
Person 与 IDCard 就是聚合关系,人有身份证,但是人和身份证两者之间可以分离

public class Person{
    private IDCard card;
    private Head head = new Head();
}
public class IDCard{}
public class Head{}

在这里插入图片描述

如图:UML类图中实心菱形代表组合关系,空心菱形代表聚合关系

注意:以上所说的只是例子,比如电脑和鼠标是聚合关系,但是也可能是聚合关系,如下代码

public class Computer {
    // 作为 Computer 类的成员私有变量
    private Mouse mouse = new Mouse(); //鼠标和computer 不能分离
    private Moniter moniter = new Moniter();//显示器和Computer 不能分离
    
    public void setMouse(Mouse mouse) {
        this.mouse = mouse;
    }
    public void setMoniter(Moniter moniter) {
        this.moniter = moniter;
    }
}

// 鼠标类
public class Mouse {
}

public class Moniter {
}

如上例子:当 Computer 类创建实例化的时候,Mouse 与 Moniter 类也都同时实例化,而当 Computer 类实力对象被销毁的时候,Mouse 与 Moniter 类也都同时被销毁了,因此,在这种情况下,电脑和鼠标之间的关系是组合关系

在这里插入图片描述

你可能感兴趣的:(设计模式系列(八)23种设计模式-----单例设计模式)