0
点赞
收藏
分享

微信扫一扫

chatgpt赋能python:Python一行输入两个数:简单又高效

c一段旅程c 2023-06-09 阅读 38

目录

Spring是什么?

Spring指的是Spring Framework(Spring框架),它是一个开源框架,有着活跃而庞大的社区,这就是它之所以能长久不衰的原因。Spring支持广泛的应用场景,它可以让Java企业极的应用程序开发起来更简单。

简单概况Spring:Spring是包含了众多工具方法的IoC容器。

什么是容器?

容器是用来容纳某种物品的(基本)装置。

例如:

List/Map --> 数据存储容器
Tomcat --> Web容器

什么是IoC?

Spring也是一个容器,Spring是什么容器?Spring是一个IoC容器。

IoC = Inversion of Control 翻译成中文是“控制反转”的意思,也就是说Spring是一个“控制反转”的容器。控制反转(对象的生命周期)

传统开发

不好理解是吧!举个示例:
假如,我们现在构建一辆“车”的程序,我们的实现思路是这样的:

在这里插入图片描述
构建一辆车,然后车需要依赖车身,而车身需要依赖地盘,而地盘需要依赖轮胎,代码实现如下:

汽车类

package old;

public class Car {

    private Framework framework;

    public Car() {
        framework = new Framework();
    }

    public void init() {
    	System.out.println("执行了 car init 方法");
        // 依赖车身
        framework.init();
    }
}

车身类

package old;

public class Framework {

    private Bottom bottom;

    public Framework() {
        bottom = new Bottom();
    }

    public void init() {
    	System.out.println("执行了 framework init 方法");
        // 依赖底盘
        bottom.init();
    }
}

底盘类

package old;

public class Bottom {

    private Tire tire;

    public Bottom() {
        tire = new Tire();
    }

    public void init() {
        System.out.println("执行了 bottom init 方法");
        // 依赖轮胎
        tire.init();
    }
}

轮胎类

package old;

public class Tire {

    private int size = 20;

    public void init() {
        System.out.printf("执行了轮胎初始化方法:size = " + this.size);
    }
}

测试类

package old;

public class App {
    public static void main(String[] args) {
        Car car = new Car();
        car.init();
    }
}

在这里插入图片描述

上面的程序中,轮胎的尺寸是固定的,然而随着对车的需求量越来越大,个性化需求也会越来越多,这时候我们就需要加工多种尺寸的轮胎,那这个时候就要对上面的程序进行修改了,修改的代码如下所示:

汽车类

package old;

public class Car {

    private Framework framework;

    public Car(int size) {
        framework = new Framework(size);
    }

    public void init() {
        System.out.println("执行了 car init 方法");
        // 依赖车身
        framework.init();
    }
}

车身类

package old;

public class Framework {

    private Bottom bottom;

    public Framework(int size) {
        bottom = new Bottom(size);
    }

    public void init() {
        System.out.println("执行了 framework init 方法");
        // 依赖底盘
        bottom.init();
    }
}


底盘类

package old;

public class Bottom {

    private Tire tire;

    public Bottom(int size) {
        tire = new Tire(size);
    }

    public void init() {
        System.out.println("执行了 bottom init 方法");
        // 依赖轮胎
        tire.init();
    }
}

轮胎类

package old;

public class Tire {

    private int size = 20;

    public Tire(int size) {
        this.size = size;
    }

    public void init() {
        System.out.printf("执行了轮胎初始化方法:size = " + this.size);
    }
}


测试类

package old;

public class App {
    public static void main(String[] args) {
        Car car = new Car(15);
        car.init();
    }
}

看了上面的代码,大家会不会想:当最底层代码改动之后,整个调⽤链上的所有代码都需要修
改。

ioc 开发(控制反转式程序开发)

汽车类

package ioc;

public class Car {

    private Framework framework;

    public Car(Framework framework) {
        this.framework = framework;
    }

    public void init() {
        System.out.println("执行了 car");
        // 依赖车身
        framework.init();
    }
}


车身类

package ioc;

public class Framework {

    private Bottom bottom;

    public Framework(Bottom bottom) {
        this.bottom = bottom;
    }

    public void init() {
        System.out.println("执行了 framework");
        // 依赖底盘
        bottom.init();
    }
}

底盘类

package ioc;

public class Bottom {

    private Tire tire;

    public Bottom(Tire tire) {
        this.tire = tire;
    }

    public void init() {
        System.out.println("执行 bottom");
        // 依赖轮胎
        tire.init();
    }

}

轮胎类

package ioc;

public class Tire {

    private int size = 20;

    public Tire(int size) {
        this.size = size;
    }

    public void init() {
        System.out.println("轮胎:size = " + size);
    }
}

测试类

package ioc;

public class App {
    public static void main(String[] args) {
        Tire tire = new Tire(30);
        Bottom bottom = new Bottom(tire);
        Framework framework = new Framework(bottom);
        Car car = new Car(framework);
        car.init();
    }
}

在这里插入图片描述

在这里插入图片描述

DI(依赖注入)

Ioc是“目标”也是一种思想,而目标和思想只是一种指导原则,最终还是要有可行的落地方案,而DI就属于具体的实现

举报

相关推荐

0 条评论