Spring框架-IOC容器
以前我们A类引用B类的时候,需要new出B类的一个实例,这种方式其实是有很多问题的,因为耦合性太高了,不利于后期代码的扩展和维护。
现在调用其他对象的时候,我们使用IOC容器,相当与一个工厂
工厂模式:根据我们提供的我们所需对象的实例描述,为我们返回所需要的产品
四要素:
1.产品的规范 接口
2.产品 产品要实现接口
3.工厂 负责与客户进行交互的
4。客户端/调用
下面是一个简单的工厂模式的小例子
架构:
package interf;
//规范
public interface Animal {
public void eat();
public void sport();
}
package model;
import interf.Animal;
public class Cat implements Animal {
@Override
public void eat() {
System.out.println("猫喜欢吃老鼠");
}
@Override
public void sport() {
System.out.println("猫喜欢睡觉");
}
}
package model;
import interf.Animal;
public class Dog implements Animal {
@Override
public void eat() {
System.out.println("狗喜欢吃骨头");
}
@Override
public void sport() {
System.out.println("狗喜欢奔跑");
}
}
package model;
import interf.Animal;
//工厂
public class Factory {
//字符串常量,负责与调用者进行交互
public static final String CAT = "cat";
public static final String DOG = "dog";
// 模拟用户的调用
public Animal getAnimal(String str) {
if (CAT.equals(str)) {
return new Cat();
} else if (DOG.equals(str)) {
return new Dog();
} else {
return null;
}
}
}
package test;
import interf.Animal;
import model.Factory;
public class FactoryTest {
public static void main(String[] args) {
Factory fac=new Factory();
Animal animal=null;//用来接收返回来的对象
animal = fac.getAnimal("cat");
animal.eat();
animal.sport();
}
}
运行结果:
猫喜欢吃老鼠
猫喜欢睡觉
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY