0
点赞
收藏
分享

微信扫一扫

设计模式(二)类之间的六大关系

龙驹书房 2022-03-18 阅读 109

文章目录

目录

文章目录

前言

一、类之间有什么关系?

二、具体介绍

1.依赖关系

2.泛化关系

3.实现关系

4.关联关系

5.聚合关系

6.组合关系

总结


前言

        平时经常看到类之间的依赖、泛化、实现、关联、聚合、组合关系,却不认识,今天带大家来彻底熟悉他们的概念。


一、类之间有什么关系?

        类之间存在依赖、泛化、实现、关联、聚合、组合等关系。UML类图是描述类与类之间的关系的,学习这些关系有助于我们看懂和会使用类图。

二、具体介绍

1.依赖关系

        依靠别人或事物而不能自立或自给称为依赖,把这句话带入到类的关系中去理解,就是指一个类中使用了其他的类,包括但不限于作为成员变量、方法返回类型、参数类型以及在方法中引用。这样他们就产生了依赖关系,如果这些被依赖的类不存在,在依赖的类中编译都会报错的。

代码如下(示例):

public class Main {
     
    // 作为成员变量
    private A a;
    
    // 作为方法返回类型
    public B useB(){
        return new B();
    }
    // 作为参数
    public void useC(C c){

    }
    // 在方法中使用
    public void useD(){
        D d = new D();
    }

}

class A{

}

class B{

}

class C{

}

class D{

}

2.泛化关系

         泛化是指由具体的、个别的扩大为一般的。泛化关系实际上就是继承关系,是依赖关系的特例。比如一个类的某个公有方法,如果该类没有子类,则该方法是个别的,如果存在子类,则方法可以被继承或者重写,就扩大为一般的方法。

代码如下(示例):

public class Main {

    // 基类方法
    public void own(){
        System.out.println("this is Main's own method");
    }

    public static void main(String[] args) {
        new SubClass().own();
    }

}

class SubClass extends Main{

    // 重写基类方法
    @Override
    public void own() {
        // 拥有基类方法
        super.own();
        // 自定义功能
        System.out.println("he is lie");
    }
}

3.实现关系

        所谓实现就是把抽象的内容具体化。就是指类实现接口,也是依赖关系的一种特例。

代码如下(示例):

// 实现接口
public class Main implements Demo{

    // 实现接口方法
    @Override
    public void demo() {
        
    }
}

interface Demo{
    void demo();
}

4.关联关系

        关联是指事物相互间产生的影响和牵连。关联关系存在单向关系(依赖)和双向关系称为关联的导航性。关联也是依赖的特例,单向关系其实就是依赖关系。关联的对象可以有0个至多个,称之为关联的多重性。

代码如下(示例):

// 单方面一对一关系(依赖)
public class Main{

    private A a;
}

class A{
    
}
// 双方一对一关系
public class Main{

    private A a;
}

class A{
    private Main m;
}

5.聚合关系

        聚合是指分散的聚集到一起。聚合是指整体与部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,具有关联关系的导航行与多重性。

代码如下(示例):

// 整体(关联关系单方面一对多关系)
public class Main{

    //关联部分,部分被使用时才被初始化,表示可以被分离
    private A a;
    private B b;
    
    public void setA(A a){
        this.a = a;
    }
    
    public void setB(B b){
        this.b = b;
    }

}
// 部分
class A{

}
// 部分
class B{

}

6.组合关系

        组合是指指由几个部分或个体.结合成的整体。在类的关系中也是指整体与部分的关系,但是整体与部分不能分开。

// 整体
public class Main{

    //组合关系,不可分离,整体初始化时部分也被初始化,表示整体离不开部分
    private A a = new A();
    private B b = new B();

}
// 部分
class A{

}
// 部分
class B{

}

总结

       以上就是今天要讲的内容,本文仅仅简单介绍了类之间的六种关系。并附示例代码更有助于大家理解。

举报

相关推荐

0 条评论