Springboot中的工厂模式

本篇文章主要讲述了工厂模式在spring boot中的使用

一、创建一个接口

public interface LoginInterface {
    Object login(Object object);

    Object register(Object object);
}

二、创建一个工厂类

@Service
public class LoginFactory {
    @Autowired
    private Map<String, LoginInterface> loginServiceMap = new ConcurrentHashMap<>();

    public LoginInterface getLogin(String key) {
        return loginServiceMap.get(key);
    }
}

三、创建若干接口实现类

@Component("sysLogin")  // 其值为此实现类的键
@AllArgsConstructor
public class SystemLogin implements LoginInterface { // 一定要继承上述接口
    
    @Override
    public Object login(Object object) {
        // doSomething
        return null;
    }

    @Override
    public UserTable register(Object object) {
        return null;
    }
}

四、调用工厂模式

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private LoginFactory loginFactory;

    /**
     * 用户登录
     * @return
     */
    @PostMapping("/login")
    public Result login(String loginType) {
        // loginType的值与实现类中@Component注解中的值一致,即可调用对应的实现类
        LoginInterface loginInterface = loginFactory.getLogin(loginType);
        loginInterface.login();
        return null;
    }
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值