《Oracle Java SE编程指南》12-01:依赖

课程封面-JavaSE-AT阿宝哥

内容导航

  • 前言

前言

除了关联关系外,还有一种常用的关系,是依赖关系。依赖关系表明,处于这种关系一端的元素以某种方式依赖于另一端的元素。这警告了设计者,如果其中一个元素发生了改变,可能会影响到另一个元素。存在许多种不同的依赖关系,比如,在构架模型中一个系统组件或者包依赖于另一个组件和包,或者实现层的一个模块依赖于另一个模块。

1、定义和特点

本章节中的依赖关系,特指一个类A使用到了另一个类B,在语义上是“use(使用)”关系。另外,依赖关系的特点是偶然性的、临时性的、非常弱的,但是类B的变化肯定会影响到类A。

2、代码表现

2.1、形式参数

依赖关系在代码层面比较常见的表现是类B作为形式参数被类A在某个方法中使用。如:

类A:

public class A {

    public A() {

    }

    public void method(B b) {

    }

}

类B:

public class B {

    public B() {

    }

}

2.2、局部变量

类A:

public class A {

    public A() {

    }

    public void method() {
        B b = new B();
    }

}

类B:

public class B {

    public B() {

    }

}

2.3、静态方法调用

类A:

public class A {

    public A() {

    }

    public void method() {
        B.staticMethod();
    }

}

类B:

public class B {

    public B() {

    }
    
    public static void staticMethod() {
        
        
    }

}

2.4、返回值

类A:

public class A {

    public A() {

    }

    public B method() {
        return null;
    }

}

类B:

public class B {

    public B() {

    }

}

3、依赖与关联的区别

关联是“HAS”关系,依赖是“USE”关系
-A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关系。
-A类依赖B类,指的是B的对象作为A类的方法形式参数存在,称为“use”关系。当然,也包括局部变量、返回值类型和静态方法调用这三种场景。

生命周期不同
-如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁,所关联的B类对象也被销毁。即只要A类对象存在,B类对象就存在。
-如果A类依赖B类,那么只有当A类对象调用到相应方法时,B类对象才被临时创建,方法执行结束,B类对象即被回收,A类和B类之间的依赖关系是一种瞬时的关系。

4、典型案例

4.1、人与交通设备

//类:人
public class Human {

    public Human() {

    }

    public void driver(Vehicle vehicle) {

    }

}
//类:交通设备
public class Vehicle {
    
    public Vehicle() {
        
    }
    
    public void move() {
        
        
    }

}

4.2、发送器和消息

//类:发送器
public class Sender {
    
    public Sender() {
        
    }
    
    public void send(Message message) {
        
        
    }

}
//类:消息
public class Message {
    
    public Message() {
        
    }

}

4.3、Java API静态方法

public class Client {

    public static void main(String[] args) {

        // 常用静态方法
        long currentTime = System.currentTimeMillis();

        double randomNum = Math.random();

        int num = Integer.parseInt("100");

        String string = String.valueOf(true);

        DateFormat dateFormat = DateFormat.getDateInstance();

    }

}

4.4、查询用户

public class UserDaoImpl {

    public UserModel findById(Long id) {

        UserModel userModel = new UserModel();
        return userModel;

    }

}
public class UserModel {

    private Long id;

    public UserModel() {

    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

}

持续更新,欢迎留言提议!
码字很累,多点赞多赞赏!


扫描二维码,关注AT阿宝哥

你可能感兴趣的:(《Oracle Java SE编程指南》12-01:依赖)