序篇-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(); } }
关联包含组合与聚合,关联与依赖的区别在于关联是强联系,依赖是弱联系