标签:oppo AC instance AMM 公众号 学习 虚线 设计 存储
最近在学习设计模式,接触最多的就是先用UML类图画出这种设计模式。平常看其他人的博客多多少少也碰到UML类图,毕竟再多的文字,都没有一张图来的直白。掌握UML图其实对与java程序员来说,还是很有必要的。
java中的类我们最熟悉不过了。比如我新建了一个下面的类
public class Phone {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
protected void call(){
}
}
对应的Phone类的UML图为
继承关系是用于描述父子类之间的关系的,父类又称为基类或者超类。子类又称作派生类。( 记得之前看其他人的博客。看到超类。瞬间懵逼了,后来一查,就是父类,所以基础的东西一定要掌握牢固)
下面定义个Mi和Oppo
public class Mi extends Phone{
private String miVersion;
public void hot(){
}
}
public class Oppo extends Phone {
private String oppoVersion;
public void beautiful(){
}
}
对应的UML类图为
接口 大家平常经常用到,在接口中通常没有属性
public interface Language {
public void hello();
}
对应的UML类图
我们定义了接口,就去实现接口
public class Chinese implements Language {
@Override
public void hello() {
System.out.println("你好");
}
}
public class English implements Language{
@Override
public void hello() {
System.out.println("hello");
}
}
对应的UML类图
关联关系是类与类 之间最常见的一种关系,它是一种结构化的关系。表示一类对象与另一类对象之间有联系。关联关系分单向关联、双向关联 、自关联
单向关联指的是 关联只有一个方向,比如 我们程序员拥有电脑
public class Computer
{
}
public class Programmer
{
private Computer computer;
}
对应的UML类图为
双向关联的关系就是双向的,比如程序员买电脑 ,反之。电脑也 和程序员关联。这就是双向关联。
public class Computer
{
private Programmer programmer;
}
public class Programmer
{
//程序员不止一台电脑
private Computer[] computer;
}
对应的UML类图为
自关联指的就是对象中的属性为对象本身,我首先就想到了单例模式
public class Singleton {
//构造函数私有化
private Singleton(){
}
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
对应的UML类图为
可以简单理解,就是一个类A使用到了类B.这种使用关系是具有偶然性的、临时性的。但是B的变化会影响到A. 比如,驾驶员(Driver)开车,Driver类的drive()方法将车(Car)的对象作为一个参数传递,以便在drive()方法中能够调用car的move()方法,且驾驶员的drive()方法依赖车的move()方法,因此也可以说Driver依赖Car
public interface Car
{
public void move();
}
public class Driver
{
public void drive(Car car)
{
car.move();
}
}
对应的UML类图为
聚合关系表示整体与部分的关系,在聚合关系中,成员对象实整体的一部分,但是成员对象可以脱离整体对象独立存在。比如电脑有 cpu,ssd
public class Cpu
{
}
public class Ssd
{
}
public class Computer
{
private Cpu cpu;
private Ssd ssd;
public Computer(Cpu cpu, Ssd ssd)
{
this.cpu= cpu;
this.ssd= ssd;
}
}
对应的UML类图
组合关系也表示的是一种整体和部分的关系。但是在组合关系中整体对象可以控制成员对象的声明周期,一旦整体对象不存在,成员对象也不存在,有种同生共死的感觉。比如人的 头 和嘴巴、鼻子。嘴巴和鼻子是头的组成部分之一,一旦头没了,嘴巴也没有了(好可怕)。
public class Mouth
{
}
public class Nose
{
}
public class Head
{
private Mouth mouth;
private Nose nose;
public Head()
{
mouth = new Mouth();
nose = new Nose();
}
}
对应的UML类图
基本上常用的都介绍完了,不过实际应用中,不必完全纠结于细节,合理的利用对象之间的关系给出合理的设计方案即可
对了。我先在画图都是用在线的 processon
最近公司鼓励大家进行写博客写文章。我也对大家提供下我平时写文章用到的工具以及一点总结
标签:oppo AC instance AMM 公众号 学习 虚线 设计 存储
原文地址:https://www.cnblogs.com/zhenghengbin/p/9246615.html