当前位置: 首页 > news >正文

asp提交到另外网站qq免费建网站

asp提交到另外网站,qq免费建网站,注册公司手续流程,wordpress 腾讯qq登陆一、什么是简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种设计模式,其中包含一个工厂类,根据传入的参数不同,返回不同类的实例。这个工厂类封装了对象的创建逻辑,使得客户端代码可以从直接创建…

一、什么是简单工厂模式

简单工厂模式(Simple Factory Pattern)是一种设计模式,其中包含一个工厂类,根据传入的参数不同,返回不同类的实例。这个工厂类封装了对象的创建逻辑,使得客户端代码可以从直接创建对象的复杂性中解放出来。

二、简单工厂模式的角色

  1. 抽象产品(Product)

    • 定义了产品的接口或者抽象类,所有的具体产品类都应该实现这个接口或继承这个抽象类。
    • 它规定了具体产品对象必须实现的接口。
  2. 具体产品(Concrete Product)

    • 实现了抽象产品接口的具体产品类。
    • 工厂模式创建的最终对象,是具体产品类的实例。
  3. 抽象工厂(Creator)

    • 提供了一个创建产品的接口,用于创建和返回一个产品实例。
    • 它可能包含一个或多个创建产品对象的方法。
  4. 具体工厂(Concrete Creator)

    • 实现了抽象工厂接口的具体工厂类。
    • 它负责实例化具体的产品对象,并且返回一个产品实例。

三、简单工厂模式的典型应用场景

  1. 对象的创建需要灵活性: 当对象的创建依赖于多个条件,或者需要根据不同的输入参数来创建不同类型的对象时,工厂模式提供了一种灵活的方式来处理这些情况。

  2. 创建对象成本较高: 当对象的创建过程中涉及到复杂的逻辑或者资源消耗较大时,使用工厂模式可以封装这些复杂的创建过程,使得客户端代码更加简洁。

  3. 数据库连接池: 在需要创建数据库连接时,可以使用工厂模式来封装创建连接的过程,同时可以管理连接的生命周期。

四、简单工厂模式在StaticListableBeanFactory中的应用

StaticListableBeanFactory 是 Spring 框架中 BeanFactory 接口的一个具体实现,它是一种特殊类型的工厂,用于存储和管理 bean 的实例。在工厂模式中,工厂类负责创建对象,而在 StaticListableBeanFactory 中,这个对象就是 Spring 容器管理的 bean。这个工厂是一个静态的工厂,意味着它不基于 bean 的定义来动态创建 bean,而是在工厂初始化时就添加了所有 bean 的实例。

在工厂模式的应用中,StaticListableBeanFactory 扮演了以下几个角色:

  1. 抽象工厂(Factory):提供了一个接口或抽象类,定义了创建对象的方法。在 StaticListableBeanFactory 中,这个接口是由 BeanFactory 提供的,它定义了 getBean 等方法来获取 bean 实例。

  2. 具体工厂(Concrete Factory):实现了工厂接口的具体类,负责创建具体产品的对象。StaticListableBeanFactory 就是具体工厂的实现,它通过 addBean 方法静态地添加 bean 实例。

  3. 抽象产品(Product):工厂模式中创建的对象。在 Spring 中,这些对象就是由 StaticListableBeanFactory 管理的 bean。

  4. 具体产品(Concrete Product):实现了产品接口的具体类。在 Spring 的上下文中,这些是由 StaticListableBeanFactory 管理的具体 bean 实例。

StaticListableBeanFactory 在工厂模式中的应用特点如下:

  • 静态实例管理StaticListableBeanFactory 存储的是 bean 的实例,而不是基于 bean 定义来动态创建实例。这意味着所有的 bean 必须在工厂初始化时就已经存在。

  • 单例管理StaticListableBeanFactory 只支持单例 bean,不支持原型(prototype)bean。这是因为它在初始化时就已经创建了 bean 的实例,并且存储起来供后续使用。

  • 列表功能:由于实现了 ListableBeanFactory 接口,StaticListableBeanFactory 支持通过类型来检索 bean,这允许客户端代码可以通过类型来获取所有匹配的 bean 列表。

  • 简单性StaticListableBeanFactory 是一个简化版的 bean 工厂,它不支持 bean 的生命周期管理、依赖注入、bean 后处理等高级功能,因此适用于简单的应用场景。

下面是一个简单的示例,展示了如何使用 StaticListableBeanFactory 来实现工厂模式:

//抽象工厂
public interface BeanFactory {<T> T getBean(String name, Class<T> requiredType) throws BeansException;Object getBean(String name, Object... args) throws BeansException;}//具体工厂
public class StaticListableBeanFactory implements BeanFactory {@Overridepublic Object getBean(String name) throws BeansException {String beanName = BeanFactoryUtils.transformedBeanName(name);Object bean = this.beans.get(beanName);if (bean == null) {throw new NoSuchBeanDefinitionException(beanName,"Defined beans are [" + StringUtils.collectionToCommaDelimitedString(this.beans.keySet()) + "]");}if (BeanFactoryUtils.isFactoryDereference(name) && !(bean instanceof FactoryBean)) {throw new BeanIsNotAFactoryException(beanName, bean.getClass());}if (bean instanceof FactoryBean && !BeanFactoryUtils.isFactoryDereference(name)) {try {return ((FactoryBean<?>) bean).getObject();}catch (Exception ex) {throw new BeanCreationException(beanName, "FactoryBean threw exception on object creation", ex);}}else {return bean;}}public void addBean(String name, Object bean) {this.beans.put(name, bean);}}// 具体产品
class MyBean {public void doSomething() {System.out.println("Doing something");}
}//客户端
public class StaticListableBeanFactoryExample {public static void main(String[] args) {// 创建 StaticListableBeanFactory 实例StaticListableBeanFactory beanFactory = new StaticListableBeanFactory();// 创建一个具体的产品实例MyBean myBean = new MyBean();// 将产品实例添加到工厂中,关联一个名称beanFactory.addBean("myBeanName", myBean);// 从工厂中获取产品实例MyBean bean = beanFactory.getBean("myBeanName", MyBean.class);// 使用产品bean.doSomething();}
}

在这个示例中,MyBean 是具体产品,我们创建了它的一个实例,并将其添加到 StaticListableBeanFactory 中。然后,我们可以通过工厂的 getBean 方法来获取这个 bean 并使用它。这个过程展示了工厂模式的典型应用,即通过工厂来封装对象的创建过程,使得客户端代码更加简洁,并且解耦了对象的创建和使用。

http://www.yayakq.cn/news/857411/

相关文章:

  • 宜春做网站的公司网站开发最新书籍
  • 营销型网站一个多少钱西安建筑公司网站建设
  • 网站开发职业生涯规划书帝国网站认证码
  • 金坛网站优化做网站需要买ip地址吗
  • 心理网站的建设与维护用户密码找回网站
  • seo网站建设培训wordpress关站
  • 长春网站建设致电吉网传媒优兰州正规的装修公司
  • 263云通信官方网站小程序注册需要什么资料
  • 资讯网站域名选购西安企业招聘官网
  • 网站项目建设与管理论文网站文章页要不要做内链
  • 浏览器怎样屏蔽网站一个网站 两个数据库
  • 那些网站权重高用腾讯云做购物网站视频
  • 网站开发组织架构图南昌网站建设方案维护
  • 做网站 广州建一个个人网站要多少钱
  • wap手机网站影视广告制作公司
  • 江门网站制作方案定制企业网站素材图片
  • 什么叫H5网站开发天津网络推广公司
  • 遵义网站建设托管公司中小企业信息公示平台
  • 仓储网站建设学习网站二次开发
  • 太原学网站开发的学校wordpress标题换行显示不全
  • 焦作市网站建设科技休闲食品网站建设
  • wordpress彩虹条代码关键词优化哪个好
  • 做网站首页ps分辨率多少高邮企业网站建设
  • 开源php企业网站建设网站需要几个步骤
  • 网站定制那个好seo查询是什么
  • 网站建设与制作这个行业怎么样呢怎么申请公司网址
  • 南昌冶金建设有限公司网站山西省网站建设价格
  • 山东做网站建设的好公司旅游网络营销
  • ftp怎么做网站的备份软件开发兼职平台有哪些
  • 营销企业网站建设步骤wordpress如何导出