71muke 71muke

传统开发模式使用对象

在正式讲解IoC容器的使用好处前,我们需要先对传统编码方式存在的问题进行分析,接下来通过传统的开发方式进行讲解演示使用。

上节课我们简单的对比了传统开发模式和IoC容器的两种模式,方便大家理解,我们通过代码对比两者,再总结为什么使用IoC容器反转来开发项目


一、传统开发模式开发项目

假如有三个开发者想从71muke网上寻找课程来学习,对应有三门课程。它们想学习对应课程的关系如下:

(1)小李想学习Spring框架学习

(2)小王想学习ASP.NET MVC开发

(3)小峰想学习MyBatis

那么传统的代码表示是怎么样的呢?


1、我们通过maven创建java项目,项目命名为IoCTest

image.png

接着输入项目名称:

image.png


2、在项目的java文件夹下创建下面的包,对应的创建几个类文件:

(1)在com.test.spring.ioc包下创建Application.java文件:

image.png

(2)在com.test.spring.ioc.entity包下创建Course.java文件和Developer.java文件:

image.png


3、在Course.java文件中编写下面的代码

package com.test.spring.ioc.entity;

public class Course {
    private String name;
    private String cateName;

    public Course() {
    }

    public Course(String name, String cateName) {
        this.name = name;
        this.cateName = cateName;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCateName() {
        return cateName;
    }

    public void setCateName(String cateName) {
        this.cateName = cateName;
    }
}

4、在Developer.java文件中编写下面的代码

package com.test.spring.ioc.entity;

public class Developer {
    private Course course;
    private String name;

    public Developer() {
    }

    public Developer(Course course, String name) {
        this.course = course;
        this.name = name;
    }

    public void learn(){
        System.out.println(this.name+"正在学习71muke网的"+this.course.getName());
    }

    public Course getCourse() {
        return course;
    }

    public void setCourse(Course course) {
        this.course = course;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

里面有一个learn方法,用于输出谁在学习什么内容。


5、在Application.java文件中编写下面的代码

package com.test.spring.ioc;

import com.test.spring.ioc.entity.Course;
import com.test.spring.ioc.entity.Developer;

public class Application {
    public static void main(String[] args) {
        //创建三门课程  ,传统方式,我们要修改下面的代码,才能运行得到不同的结果,修改代码后企业开发流程需要编译发布测试再上线,流程就很繁琐
        Course c1 = new Course("Spring框架学习","JAVA");
        Course c2 = new Course("ASP.NET MVC开发","NET");
        Course c3 = new Course("Mybatis","JAVA");
        //开发者跟课程存在直接关联
        Developer d1 = new Developer(c1,"小李");
        Developer d2 = new Developer(c2,"小王");
        Developer d3 = new Developer(c3,"小峰");
        //执行
        d1.learn();
        d2.learn();
        d3.learn();
    }
}

6、运行结果:

image.png


上面的开发方式是我们传统开发过程中的使用方式,使用上看着并没有什么大问题,但是类和类之间的关联性很强,也就是对象之间存在直接耦合性,耦合性高。

当课程或者是开发者需要学习不同的内容时,需要修改代码,在企业的开发流程中,如果代码修改后,是要走流程开发、测试、发布的流程才行。这样子开发效率很慢,效率也很低,这样的代码不利于代码的维护


结论:对象直接引用导致对象硬性关联,程序难以扩展维护。


现在的解决办法都是使用IoC容器来解决哲宏硬性关联的问题,保障程序有更好的扩展性。


带着这样的问题我们来看看怎么通过IoC容器解决这个问题。

留言

发布留言

需要购买本课才能留言哦~

{{ item.createtime | dateStr }}