设计模式入门之类与类之间的关系和UML图

设计模式入门之类与类之间的关系和UML图

前言

学习设计模式,避免不了学习类和类之间的关系,因为设计模式的底层其实就是类和类之间的关系,只有理解了类和类之间的关系才可以理解更加深层次的设计模式。

类关系概述

  • is a包括了 继承,实现关系
  • has a包括了 组合,聚合,关联关系
  • use a包括了 依赖关系

5大关系

继承

返回目录

继承,就是对原来的类进行加强。就好像对装备进行升级,对动物的种类进行扩充。非常常用,就不多说了。

public class Animal{}
public class Dog extends Animal{}

实现

返回目录

就是一个类对一个接口进行实现,把原来抽象的东西具体化了。就好像数学里面有个公式 y = x + 3*n , 然后我们实现这个抽象的公式就可以通过代入 x=3,n=5 来得出 y 的值,就把抽象的公式用了起来,可以计算出实际的东西。

public interface UserService{}
public class UserServiceImpl implements UserService{}

弱依赖

返回目录

一个类使用到了另外一个类,但是这个使用时偶然的、临时性的。

火车可以进行移动,但是移动方式可以看做是一个对象,移动的方式改变就会影响火车的行为。可以看到我们在这里依赖的引入是在一个方法签名当中,可能只有这个方法会用到这个依赖对象,所以这个方法一旦结束,那么这个依赖对象就不会对这个类造成影响。

public class Train{
    public void move(){}
}
public class Person{
    public void move(Train train){
        train.move();
    }
}

强依赖(关联)

返回目录

比依赖更加强的关系,关系不是偶然、临时性的。比如你和你的朋友,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向的、双向的

爸爸和儿子之间的关系可以是双向的,爸爸有时候会需要儿子的帮助,儿子有时候也会需要用到爸爸帮助。两者是平等的,并且这种关系通常是长期的。

public class Father{
    private Son son;
    public void setSister(Son son){
        this.son = son;
    }
}
public class Son{
    private Father father;
    publicvoid setBrother(Father father){
        this.father = father;
    }
}

弱聚合

返回目录

关联的一种特殊形式,整体和部分的关系。整体和部分是可以分离的,他们可以有各自的生命周期,部分可以属于整个对象,也可以作为整个对象共享。比如汽车和发动机之间的关系,汽车需要有发动机,但是发动机的型号可以各种类型的,发动机的可以在制造新车的时候提供不同的发动机类型。

汽车需要有发动机,但是中途发动机的类型是可以进行改变的。

public class Engine{}
public class Car{
    private Engine engine;
    public Car(Engine engine){
        this.engine=engine;
    }
    
    public replaceEngine(Engine engine){
        this.engine = engine;
    }
}

强聚合(组合)

返回目录

特殊的聚合,也是整体和部分的关系,但是整体不能离开部分。整体和部分的生命周期通常是相同的,例如人和人的心脏。

人的心脏是惟一的,从人的出生开始就会创建一个心脏,这个心脏在后面是不会进行更换的。伴随这个人的终生。

public class Heart{}
 
public class Person{
 
    private Heart heart;
 
    public Person(){
 
        this.heart=new Heart();
 
    }
}

UML类图

UML参考文章

类图中大对象

返回目录

1. 类(Class)

2. 接口(Interface)

3. 包(Package)

4. 注释(Note)

对象之间的关系

返回目录

在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

泛化

泛化(Generalization)表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系

1. 继承

2. 实现

依赖

关联

聚合

组合

对象细分属性

返回目录

-表示private
#表示protected
~表示default,也就是包权限
_下划线表示static
斜体表示抽象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值