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();
  }
}

 

运行结果:

猫喜欢吃老鼠
猫喜欢睡觉

posted on   ~码铃薯~  阅读(162)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· 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

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示