Spring工厂模式

普通工厂模式和抽象共产模式的优缺点:(1)普通工厂模式能够在单一产品维度上进行扩展,但是增加一个产品就要增加一个相应的工厂类,这样就会造成工厂的泛滥;(2)抽象工厂模式:很好的实现了一批产品的更新,但是,另一方面在单一产品维度上不好扩展。

而Spring的工厂模式原理是将Bean的信息放在配置文件当中。我们要模拟的话,可以用Java当中提供的一个特殊的类java.util.Properties,从而将类名信息在bean.properties文件中进行配置。将配置信息读取出来后,再利用反射技术进行实例化。


 1 package program.spring.factory;
2 import program.factory.model.Moveable;
3
4 public class Car implements Moveable{
5 @Override
6 public void run() {
7 System.out.println("Car running 。。。");
8 }
9 }
10
11
12 import java.util.Properties;
13 import program.factory.model.Moveable;
14 public class Main {
15 public static void main(String[]args) throws Exception{
16 Properties pro=new Properties();
17 pro.load(Main.class.getClassLoader().getResourceAsStream("bean.properties"));
18 String vehicleType=(String)pro.get("VehicleType");
19 Class clazz=Class.forName(vehicleType);
20 Moveable mov=(Moveable)clazz.newInstance();
21 mov.run();
22 }
23 }
24
25
26 properties文件:
27 VehicleType=program.spring.factory.Car

Spring工厂模式,布布扣,bubuko.com

时间: 2024-08-04 18:01:20

Spring工厂模式的相关文章

Spring 实现两种设计模式:工厂模式和单态模式

在Spring 中大量使用的以下两种设计模式:工厂模式和单态模式. 工厂模式可将Java 对象的调用者从被调用者的实现逻辑中分离出来,调用者只需关心被调用者必须满足的规则(接口) ,而不必关心实例的具体实现过程.这是面向接口编程的优势,能提高程序的解耦,避免所有的类以硬编码方式耦合在一起. 如果所有的类直接耦合,极易形成"骨牌效应",假如B 类调用了A 类,一旦A 类需要修改,则B 类也需要修改:假如C 类调用了B 类,则C 类也需要修改......依次类推,从而导致整个系统都需要改写

从基础知识到重写Spring的Bean工厂中学习java的工厂模式

1.静态工厂模式其他对象不能直接通过new得到某个类,而是通过调用getInstance()方法得到该类的对象这样,就可以控制类的产生过程.顺带提一下单例模式和多例模式:  单例模式是指控制其他对象获得该对象永远只有同一个对象  而多例模式则是根据需要从某个具体集合中获取所需的对象 1 import java.util.ArrayList; 2 import java.util.List; 3 4 5 public class Car implements Moveable{ 6 private

asp.net mvc中自行搭建实现工厂模式的spring.net+三层架构 (15-4-20)

在之前的文章中,我们已经搭好了三层框架,通过调用业务层的子接口得到实例化的业务子类,通过业务子类来调用数据访问层子接口,由子接口来实例化数据访问层子类.这里我们需要明确把框架搭这么复杂的原因是遵循了设计模式中的开闭原则:对扩展开放,对修改关闭. 搭好了框架之后,我们发现这框架并不完善:实例化对象还需要手动实现,并不能实现将对象的实例化托管.所以我们决定引入spring.net框架,它的IOC模块(依赖注入),将帮我们来完成对象的创建,管理. 1.首先我们需要在项目中引用spring.core.d

asp.net mvc中自行搭建实现工厂模式的spring.net+三层架构(更新)

首先附上本人托管在Github上的项目https://github.com/lichaojacobs/Tomato 接下来的三层结构都包含了父接口,子接口,父类,子类部分 1.编写数据访问层 数据访问层是对数据库的增删改查的操作.首先我们在数据访问层的父接口声明一些通用的对数据库统一处理的方法: 然后是业务层子接口(对应于你的数据实体模型中的Model,下面是我的项目中的Model,仅供参考),让它继承自业务层父接口 写完接口,接下来编写父接口的实现父类BaseDAL.cs 注意,在这里是通过一

简单工厂模式,工厂方法模式,抽象工厂模式,spring的狂想

菜鸟D在项目中遇见一个比较纠结的高耦合,所以就想办法来解耦.情况是这样的:系统通过用户选择treeview控件的节点判断调用不同的处理,这些处理中某些东西又是类似的.同事的建议是采用简单工厂,耦合就耦合吧,反正treeview节点基本是不会变化的.(能偷懒就偷懒吧) 菜鸟D有些偏执,想找些方法来解耦.于是就学习了这个几种方法,虽然不一定用的上,多学一点总是好的. 首先说简单工厂,例子是一个已经二到死的计算器. 简单工厂由三种角色组成:工厂类角色(creator),抽象产品类角色(product,

Spring IOC下的工厂模式

在Spring IOC容器中,我们需要创建工厂,用来管理我们需要创建的对象,因此这时就需要我们了解什么是工厂,这篇简单的小短文,可能会帮你入门,如果稍微想要仔细了解一下,可以查看这个微博https://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中,一般来说,我们需要哪个类的对象,就会自己取new 一个类的对象实例.这是根据我们需要什么,然后自己去创建什么. 在一些情况下,我们并不想直接new 一个对象,例如,我们创建一些对象前

spring.factories配置文件的工厂模式

在springboot的各个依赖包下,我们经常看到META-INF/spring.factories这个文件.spring.factories文件的内容基本上都是这样的格式: 1 # Initializers 2 org.springframework.context.ApplicationContextInitializer=3 org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitialize

Spring中如何使用工厂模式实现程序解耦?

目录 1. 啥是耦合.解耦? 2. jdbc程序进行解耦 3.传统dao.service.controller的程序耦合性 4.使用工厂模式实现解耦 5.工厂模式改进 6.结语 @ 1. 啥是耦合.解耦? 既然是程序解耦,那我们必须要先知道啥是耦合,耦合简单来说就是程序的依赖关系,而依赖关系则主要包括 1. 类之间的依赖 2. 方法间的依赖 比如下面这段代码: public class A{ public int i; } public class B{ public void put(A a)

spring学习之工厂模式

1.设计模式是一套反复使用,多数人知晓,经过分类.代码设计的经验总结. 2.工厂模式的定义:为创建一组相关或者相互依赖的对象提供一个接口,而无需指定他们的具体实现类. 3.工厂模式的适用性 (1)有一组类似的对象需要创建; (2)系统需要考虑扩展性. 4.工厂模式的三个角色 (1)抽象产品(接口) (2)具体产品(实现类) (3)生产者(工厂类) 其中concreteProduct是具体产品,product是抽象产品,creator是生产者. 5.工厂模式的好处: 提供好的灵活性和代码复用性,代