spring整合简单工厂模式实例

Spring与简单工厂模式的结合

Factory----@Component----create1/2Tool
BaseTool----接口或抽象类
ToolOne----继承或实现BaseTool
ToolTwo----继承或实现BaseTool
ConstUtil----属性注入类–@Component
主要思想:基于Annotation仅装配工厂bean
@Component
public class ToolFactory {

public BaseTool createOneTool(){
    return new ToolOne();
}

public BaseTool createTwoTool(){
    return new ToolTwo();
}

}

public abstract class BaseTool{

private void print(String str){
    System.out.println(str);
}

public void majorAct(String str){
    print(str);
}

}

public class ToolOne extends BaseTool {

@Override
public void majorAct(String str) {
    super.majorAct(str + ConstUtil.getOneToolName());
}

}

public class ToolTwo extends BaseTool{

@Override
public void majorAct(String str) {
    super.majorAct(str+ ConstUtil.getTwoToolName());
}

}

@Service
public class Services {

@Autowired
private ToolFactory toolFactory;

public BaseTool getTool(String toolType){
    switch (toolType){
        case "1":
            return this.toolFactory.createOneTool();
        case "2":
            return this.toolFactory.createTwoTool();
        default:
            return null;
    }
}

}

@RestController
@RequestMapping(value = “/spsf”)
public class Controller {

@Autowired
private Services services;

@RequestMapping(value = "/t1", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public String test(String toolType){
    BaseTool baseTool = this.services.getTool(toolType);
    baseTool.majorAct("白日依山尽:");
    return "666";
}

}

@Component
public class ConstUtil {

private static String oneToolName;

public static String getOneToolName(){
    return oneToolName;
}

@Value("${one.tool.name}")
public void setOneToolName(String oneToolName){
    this.oneToolName = oneToolName;
}

private static String twoToolName;

public static String getTwoToolName() {
    return twoToolName;
}

@Value("${two.tool.name}")
public void setTwoToolName(String twoToolName) {
    this.twoToolName = twoToolName;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值