我是新泉。在Bean标记中,我发现了factory-method和factory-method和factory-bean之间有什么区别?
我正在使用factory-method调用我的getInstance静态方法来创建singleton对象。
工厂豆是用来做什么的?
对于给定的答复,我所理解的是
Factory-method用于调用静态方法在同一个bean类中创建对象。
Factory-bean用于创建基于工厂设计模式的对象。
例如:-我正在从VegetableFactory(它将返回被询问的蔬菜对象)类中询问一个茄子对象,方法是传递我的蔬菜名称(本例中为茄子)。
如果我错了,请改正?
factory-method: represents the factory method that will be invoked to inject the bean.
factory-bean: represents the reference of the bean by which factory method will be invoked. It is used if factory method is non-static.
printable.java
package com.javatpoint;
public interface Printable {
void print();
}
A.java
package com.javatpoint;
public class A implements Printable{
@Override
public void print() {
System.out.println("hello a");
}
}
B.Java
package com.javatpoint;
public class B implements Printable{
@Override
public void print() {
System.out.println("hello b");
}
}
PrintableFactory.java
package com.javatpoint;
public class PrintableFactory {
//non-static factory method
public Printable getPrintable(){
return new A();//return any one instance, either A or B
}
}
ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="pfactory" class="com.javatpoint.PrintableFactory"></bean>
<bean id="p" class="com.javatpoint.Printable" factory-method="getPrintable"
factory-bean="pfactory"></bean>
</beans>
注意,printablefactory.java
的public Printable getPrintable()
是一个非静态方法。通常,如果我们想要访问/调用类的方法或其他资源,我们必须创建它的实例。同样,我们创建了bean。我们使用Bean的引用变量pFactory
调用工厂方法getPrintable
。
工厂方法和工厂设计模式之间的区别基本上是一样的,在底部有一点注释。一个是用于获取特定类实例的方法,另一个是负责创建对象的完整对象,包括创建对象所需的所有逻辑。
FactoryBean
的接口文档说明:
接口,由BeanFactory中使用的对象实现,而BeanFactory本身就是工厂。如果一个bean实现了这个接口,它就被用作一个对象要公开的工厂,而不是直接作为一个将自己公开的bean实例。
而且,这个对象不是用作bean实例,而是通过它的getObject
方法用作实例提供者。
在FactoryBean
上搜索FactoryMethod
的用法,它似乎经常与遗留的单例bean一起使用,以获取基础实例,但这种方法不支持初始化方法,例如初始化给定属性集的init
方法。
在这种情况下,您必须在使用类之前自己调用它,定义一个处理初始化的包装器,或者使用其他机制,如MethodInvokingFactoryBean
。
严格地说,FactoryBean
旨在管理特定的类型。实际上,您应该有一个EggPlantFactory
,而不是VegeableFactory
,因为FactoryBean
接口定义的GetObject
方法不支持参数。
本文向大家介绍简单工厂和抽象工厂有什么区别?相关面试题,主要包含被问及简单工厂和抽象工厂有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 简单工厂:用来生产同一等级结构中的任意产品,对于增加新的产品,无能为力。 工厂方法:用来生产同一等级结构中的固定产品,支持增加任意产品。 抽象工厂:用来生产不同产品族的全部产品,对于增加新的产品,无能为力;支持增加产品族。
问题内容: 我知道有很多关于这两种模式之间差异的文章,但是有些事情我找不到。 从我阅读的内容中,我看到工厂方法模式允许您定义如何创建单个具体产品,但是将实现隐藏给客户端,因为他们将看到通用产品。我的第一个问题是关于抽象工厂。它的作用是允许您在其中创建具体对象系列(取决于您使用的是哪个特定工厂),而不仅仅是一个具体对象吗?抽象工厂是否只返回一个非常大的对象或取决于调用的方法的许多对象? 我的最后两个
代码直戳: https://github.com/faif/python-patterns 创建型模式 工厂方法 实例 -> 类 -> 类工厂 抽象工厂 简单来说就是把一些具有相同方法的类再进行封装,抽象共同的方法以供调用.是工厂方法的进阶版本. 实例 -> 类 -> 类工厂 -> 抽象工厂 惰性初始化 Lazy evaluation 这个Python里可以使用@property实现,就是当调用的
工厂方法,就是通过一个"虚拟"构造方法,供调用者获取特定的实例. 至于返回的是什么实例, 得看环境和传入的参数,及 方法内的业务逻辑了. 例如, 希望在生产环境用Product目录下的配置文件,开发环境用dev目录下的配置文件 使用Iocbean的factory 通过IocBean注解内的factory参数,可以自定义工厂类及工厂method factory参数的规则是, 以井号分隔,井号之前的是
Okie正在Spring 3.1.4上运行一些第三方代码,我无法更改。代码还使用在运行时动态注入类型。这种类型属于原型范围。所有这些都是基于服务对象创建的
本文向大家介绍iOS类工厂方法是什么 ?相关面试题,主要包含被问及iOS类工厂方法是什么 ?时的应答技巧和注意事项,需要的朋友参考一下 类工厂方法的实现是为了向客户提供方便,它们将分配和初始化合在一个步骤中,返回被创建的对象,并 进行自动释放处理。这些方法的形式是+ (type)className...(其中 className不包括任何前缀)。 工厂方法可能不仅仅为了方便使用。它们不但可以将分配