文档章节

基于spring的简单工厂模式实现

M
 Marked
发布于 2017/08/04 14:24
字数 242
阅读 12
收藏 0

Spring IOC已经聚集了一堆对象在工厂里,那么就可以根据spring 提供的一些api来完成,想拿到自己的对象,根据beanName来获取到自己想要的bean。


public class SpringContextUtils  implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext pApplicationContext)   throws BeansException{
        applicationContext = pApplicationContext;
    }

    @SuppressWarnings("unchecked")
    public static <T> T getBean(String name) throws BeansException{
        return (T) applicationContext.getBean(name);
    }

搭配自己业务上的一些类型定义,完成基本的工厂模式,比如一个简单的消息发送:

public interface ISender {

    public ResultDO doSend(Message message);
}

抽象出发送模型,定义模板:

public abstract class AbsSender implements ISender{
    /**
     * 定义发送流程,模板定义
     */
}

具体发送者实现 (可能有微信、邮箱、短信等):

/**
 * spring 注解的name作为类型
 */
@Component("email")
public class EmailSender extends AbsSender {
    /**
     * 实现邮件发送
     */
}

实现根据不同类型产出不同的发送者的简单工厂:


public class SenderFactory {
    public ISender getSender(String channel){
        ISender sender = SpringContextUtils.getBean(channel);
        return sender;
    }
}

 

 

© 著作权归作者所有

M
粉丝 0
博文 1
码字总数 242
作品 0
私信 提问
咕泡-工厂 Factory设计模式笔记

##查看代码:https://gitee.com/jly521/factoryNew.git 个人感悟: 设计模式都是处理复杂问题的,如果问题本身很简单,使用设计模式反而累赘,增加了开发的复杂性 遇到最简单的情况,直接 ne...

职业搬砖20年
2018/08/17
81
0
Spring框架中的设计模式(三)

Spring框架中的设计模式(三) 原创: 瑞查德-Jack 在之前的两篇文章中,我们看到了一些在Spring框架中实现的设计模式。这一次我们会发现这个流行框架使用的3种新模式。 本文将从描述两个创意...

瑞查德-Jack
2018/07/19
109
0
Spring框架中的设计模式(四)​

Spring框架中的设计模式(四) 本文是Spring框架中使用的设计模式第四篇。本文将在此呈现出新的3种模式。一开始,我们会讨论2种结构模式:适配器和装饰器。在第三部分和最后一部分,我们将讨...

瑞查德-Jack
2018/07/20
86
0
面试官:Spring中用了哪些设计模式?

前言 设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪...

Java填坑路
02/15
563
0
这些Spring中的设计模式,你都知道吗?

设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。 Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行...

Java填坑之路
2018/08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
今天
8
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
今天
6
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
今天
8
0
Flutter 系列之Dart语言概述

Dart语言与其他语言究竟有什么不同呢?在已有的编程语言经验的基础上,我们该如何快速上手呢?本篇文章从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习Dart吧 一、...

過愙
今天
5
0
rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部