美文网首页程序员
设计模式系列(八)23种设计模式-----单例设计模式

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

作者: 上古神龙 | 来源:发表于2020-11-18 10:12 被阅读0次

    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种设计模式-----单例设计模式

        本文链接:https://www.haomeiwen.com/subject/bgwqiktx.html