序篇-UML图

闲聊:不积跬步,无以至千里;不积小流,无以成江海。设计模式的学习离不开UML图,我们各个模式的代码时,读完一遍,将代码与UML进行相关匹配可以加深我们对设计模式的理解。

1.为什么要有UML图?

随着一个系统的诞生与维护以及人员的不断变化,整个软件系统的规模越来越大,越来越难以维护,对于开发者来说可以通过花费大量的时间阅读代码的方式熟悉系统,但是跨行如隔山,如何让其他人理解我们的系统,此时为了解决这个痛点,UML诞生了。

2.什么是UML图?

UML-Unified Modeling Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。通过对大规模,复杂系统进行建模,可以帮助人们更容易理解与吸收。

3.UML图的使用

各位看官,请看下图(3-1),如果您可以完全理解该图,那请为自己点个👍 ,这篇您可以跳过了。如果您不能完全理解该类图,请继续往下走!

 

图3-1

 

 

 3.1 实现

图3-2

public interface IAnimal {

}

public class Pig implements IAnimal {

}

Pig实现了IAnimal

3.2 继承

 

图3-3

public class Pig {

}

public class WKLSmallPig extends Pig {

}

 3.3 组合

 

图3-4

public class Pig {
    private PigHead pigHead;

    public Pig(PigHead head) {
         pigHead = head;        
    }  
}

public class PigHead {

}
    

PigHead是Pig的组成部分,通常代码中使用组合优先于继承

3.4 聚合

 

图3-5

public class Class {
     private Student student;  
}

public class Student {
}

 班级与学生之间的关系是聚合,学生不是作为形参传进来的

3.5 依赖

 

图3-6

public class Student {
    void luMao(Cat cat) {
        cat.jump();  
    }  
}

public class Cat {

}  

 学生要进行撸猫需要依赖猫,在luMao()方法中作为参数传进来;依赖与组合的区别在于,没有猪头的猪不是猪,而没有猫的学生还是学生。

3.6 关联

 

图3-7

public class Student {

     //使用成员变量的方法实现关联
     private IdCard mCard;
     private void doSomthing() {
       mCard.printId();
    }  
    
    //使用方法参数形式实现关联
    public void doSomthing(IdCard card) {
       idCard.printId();
    }
}

 关联包含组合与聚合,关联与依赖的区别在于关联是强联系,依赖是弱联系

 

posted @ 2020-08-09 14:42  看不懂的猴子  阅读(290)  评论(0编辑  收藏  举报