springboot中使用工厂模式

本文介绍了如何在SpringBoot应用中使用工厂模式创建并管理TestInterface的实例,包括TestFactory的初始化、接口TestInterface的定义与TestImpl1、TestImpl2、TestImpl3的实现,以及Controller中通过TestFactory获取并调用接口的方法。
摘要由CSDN通过智能技术生成

springboot中使用工厂模式

工厂类

@Service
public class TestFactory {
	/**
	 * 	初始化时可以自动将TestInterface加入到map中,
	 *  key为实现TestInterface类@Component("test1")指定的值
	 *  value为实现TestInterface类
	 *  Map<"test1",TestImpl1>
	 */
	@Autowired
	private Map<String, TestInterface> map = new ConcurrentHashMap<String, TestInterface>();
	
	public TestInterface geTestInterface(String key) {
		System.out.println(key);
		return map.get(key);
	}
}

接口类

public interface TestInterface {
	public String getMsg(String msg);
}

接口实现类

@Component("test1")
public class TestImpl1 implements TestInterface{

	@Override
	public String getMsg(String msg) {
		return "test1:"+msg;
	}

}
@Component("test2")
public class TestImpl2 implements TestInterface{

	@Override
	public String getMsg(String msg) {
		return "test2:"+msg;
	}

}
@Component("test3")
public class TestImpl3 implements TestInterface{

	@Override
	public String getMsg(String msg) {
		return "test3:"+msg;
	}

}

controller类

@RestController(value = "/")
public class TestController {
	@Autowired
	private TestFactory testFactory;
	
	@RequestMapping(value = "msg/{key}",method = RequestMethod.GET)
	public String getMsg(@PathVariable("key")String key) {
		TestInterface test = testFactory.geTestInterface(key);
		return test.getMsg("test test");
	}
}
Spring Boot开发,抽象工厂模式可以通过使用@Autowired和@Qualifier注解来实现。具体实现步骤如下: 1.定义一个抽象工厂接口,该接口定义了一组创建对象的方法。 ```java public interface AbstractFactory { public ProductA createProductA(); public ProductB createProductB(); } ``` 2.定义具体工厂类,实现抽象工厂接口,并实现其的方法。 ```java @Component public class ConcreteFactory implements AbstractFactory { @Autowired @Qualifier("productA1") private ProductA productA; @Autowired @Qualifier("productB1") private ProductB productB; @Override public ProductA createProductA() { return productA; } @Override public ProductB createProductB() { return productB; } } ``` 3.定义抽象产品类和具体产品类,具体产品类实现抽象产品类定义的方法。 ```java public interface ProductA { public void methodA(); } @Component("productA1") public class ConcreteProductA1 implements ProductA { @Override public void methodA() { System.out.println("ConcreteProductA1 methodA"); } } public interface ProductB { public void methodB(); } @Component("productB1") public class ConcreteProductB1 implements ProductB { @Override public void methodB() { System.out.println("ConcreteProductB1 methodB"); } } ``` 4.在需要使用工厂创建对象的地方,使用@Autowired注解注入具体工厂类,并调用其的方法创建对象。 ```java @Component public class Client { @Autowired private AbstractFactory factory; public void useProduct() { ProductA productA = factory.createProductA(); ProductB productB = factory.createProductB(); productA.methodA(); productB.methodB(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值