使用spring自动注入方式实现工厂模式提高程序可扩展性

  作者:记性不好的阁主

1、定义自定义spring工厂bean


package com.example.common.factory;

import com.bozhong.nursestaff.service.MessageReminderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;

/**
* 消息提醒工厂
**/
@Component
public class MessageReminderFactory {

public static final String TODO_REMINDER_SERVICE = "todoReminderService";

@Autowired
private Map<String, MessageReminderService> serviceMap;
public MessageReminderService getService(String service){
return serviceMap.get(service);
}

}


2、定义service接口

package com.example.service;

import com.bozhong.nursestaff.dto.basics.response.MessageReminderRespDTO;
import java.util.List;

/**
* 消息提醒Service
**/
public interface MessageReminderService {

List<MessageReminderRespDTO> getReminderList();

}

3、定义service实现特定工厂类

package com.example.service.impl;

import com.bozhong.nursestaff.dto.basics.response.MessageReminderRespDTO;
import com.example.service.MessageReminderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;

/**
* 待办提醒
**/
@Service("todoReminderService")
public class TodoReminderServiceImpl implements MessageReminderService {

@Override
public List<MessageReminderRespDTO> getReminderList() {
List<MessageReminderRespDTO> list = new ArrayList<>();
// 业务逻辑略.....
return list;
}
}

4、注入工厂并调用指定工厂业务方法


@Autowired
private MessageReminderFactory messageReminderFactory;


MessageReminderService todoReminderService = messageReminderFactory.getService(MessageReminderFactory.TODO_REMINDER_SERVICE);
todoReminderService.getReminderList();


// 后续扩展其他消息提醒service


MessageReminderService otherReminderService = messageReminderFactory.getService(MessageReminderFactory.OTHER_REMINDER_SERVICE);
otherReminderService.getReminderList();


相关推荐

评论 抢沙发

表情

分类选择