本篇博客的主要目的是:演示传统编码方式的不足;
● 传统编码方式中,【一些字符串文本信息,是写死的】,【对象也是在代码中new好的、写死的】,【对象之间的关系,也是写死的;对象之间是硬关联】;这些因素的结果是,当需要调整程序的时候,就必须要修改源代码;这会导致程序可扩展性和可维护性很低;
● 由此,引出Spring Framework的必要性;(其实也就是,Spring IoC容器的必要性);Spring IoC容器通过配置的方式,实现了【对象实例化】和【对象与对象之间的依赖关系】;从而,可以解决传统编码方式的不足;
说明:
(1)本篇博客没什么难点,主要目的是演示传统编码方式的不足;博客中的代码也都很简单,而且代码部分很简单,重点是了解其中的缺点;
目录
一:需求说明:
那么,该如何编写程序,使得孩子吃到自己喜欢的苹果?
二:传统方式,程序代码实现:
这个地方不是重点,不需要抠代码细节,主要关注其中的对象依赖关系
(1)创建一maven工程
(2)创建演示类
Apple类:
package com.imooc.spring.ioc.entity; public class Apple { private String title; //标签、品种 private String color; //颜色 private String origin; //产地 public Apple() { } public Apple(String title, String color, String origin) { this.title = title; this.color = color; this.origin = origin; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getOrigin() { return origin; } public void setOrigin(String origin) { this.origin = origin; } }
Child类:
package com.imooc.spring.ioc.entity; public class Child { private String name; //小孩名字 private Apple apple; //小孩吃到的苹果 public Child() { } public Child(String name, Apple apple) { this.name = name; this.apple = apple; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Apple getApple() { return apple; } public void setApple(Apple apple) { this.apple = apple; } public void eat() { System.out.println(name + "吃到了" + apple.getOrigin() + "种植的" + apple.getTitle()); } }
Application类:
package com.imooc.spring.ioc; import com.imooc.spring.ioc.entity.Apple; import com.imooc.spring.ioc.entity.Child; public class Application { public static void main(String[] args) { Apple apple1 = new Apple("红富士","红色","欧洲"); Apple apple2 = new Apple("青苹果","绿色","中亚"); Apple apple3 = new Apple("金帅","黄色","中国"); Child lily = new Child("莉莉",apple1); Child andy = new Child("安迪", apple2); Child luna = new Child("露娜", apple3); lily.eat(); andy.eat(); luna.eat(); } }
三:弊端分析:重点!!!
(1)问题一:【字符(串),等文本信息】是写死的;
(2)问题二:【对象】是写死的,在编译时就已经确定了;
(3)问题三:【对象之间的关系】是写死的,在编译时就已经确定了;即,对象之间是硬关联;(最重要的一个问题)
为了解决上述问题,Spring应运而生,Spring最根本的目的就是【通过配置的方式,完成对象的实例化,和,对象与对象之间的依赖关系】。。。。这一切的目的,都是提高程序的可维护性和可扩展性;