Tag: 工厂

没有if,切换实现Factory的最佳方法

我正在寻找许多方法来实现Java中的Factory模式,但仍然找不到一个完美的方法,如果/ switch plus不使用reflection,则不会受到影响。 我找到的最好的一个是Tom Hawtin在这里的答案: https : //stackoverflow.com/a/3434505/1390874 但我最担心的是它将匿名类的HashMap存储在内存中。 问题是除了Tom Hawtin的回答之外,人们还会考虑使用Class.newInstance()吗? 这样可以避免我们在内存中存储不必要的匿名类吗? 加上代码会更干净。 它看起来像这样: class MyFactory { private static final Map factoryMap = Collections.unmodifiableMap(new HashMap() {{ put(“Meow”, Cat.class); put(“Woof”, Dog.class); }}); public Animal createAnimal(String action) { return (Animal) factoryMap.get(action).newInstance(); } }

Java 9:什么是集合工厂方法?

Java 9的到来为Java的Collections API带来了许多新function,其中一个是集合工厂方法。 它们是什么以及如何正确实施它们?

我可以让Hibernate通过工厂方法创建一个对象吗?

有没有办法在Hibernate中映射工厂方法(而不是让Hibernate调用默认构造函数并reflection设置属性或字段)? 如果无法映射,Hibernate是否会逐个类地为自定义对象创建提供钩子? 谢谢!

像Factory Factory这样的框架是否存在?

Factory Girl是一个方便的rails框架,可以轻松创建测试模型实例。 来自Factory Girl主页 : factory_girl允许您快速定义每个模型的原型,并询问具有对手头测试很重要的属性的实例。 一个例子(也来自主页): Factory.sequence :email do |n| “somebody#{n}@example.com” end # Let’s define a factory for the User model. The class name is guessed from the # factory name. Factory.define :user do |f| # These properties are set statically, and are evaluated when the factory is # defined. f.first_name ‘John’ f.last_name ‘Doe’ […]

java参数化通用静态工厂

在Java中是否可以创建一个静态工厂方法/类,它使用接口作为参数化类型并返回给定接口的实现类? 虽然我对generics的了解有限,但这就是我想要做的: // define a base interface: public interface Tool { // nothing here, just the interface. } // define a parser tool: public interface Parser extends Tool { public ParseObject parse(InputStream is); } // define a converter tool: public interface Converter extends Tool { public ConvertObject convert(InputStream is, OutputStream os); } // define a […]

Java 9中的Convenience Factory Method返回的特定集合类型

在Java 9中,我们有方便工厂方法来创建和实例化不可变的List,Set和Map。 但是,目前还不清楚返回对象的具体类型。 例如: List list = List.of(“item1”, “item2”, “item3”); 在这种情况下,实际返回了哪种类型的列表? 它是ArrayList还是LinkedList或其他类型的List? API文档刚提到这一行,没有明确提到它是一个LinkedList: 列表中元素的顺序与提供的参数的顺序或提供的数组中的元素的顺序相同。

简单工厂和工厂方法模式的动机

我知道有很多关于不同工厂模式的差异的问题,但答案是如此不同和令人困惑。 我读过的书籍使用不清楚和(简化)简化的例子。 即使在阅读了维基百科的解释之后,我也有很多问题,以及关于它们的大量在线解释,包括所有这些网站上的解释。 我正在阅读的这本书是Head First Design Patterns。 在Simple Factory中,客户端使用单独的类(Creator)和工厂方法(可以是静态的)来返回Products。 在工厂方法模式中,创建者和客户端是相同的东西,他们在同一个类中使用抽象方法来创建新的产品,它们在同一个类中运行。 当然,造物主(或客户)是抽象的,因此关于制作混凝土产品的决定被推迟到子类。 我的理解是否正确(例如,FMP中的客户端和创建者是相同的,我从未在FMP图中看到客户端)? 在Factory Method Pattern中,它表明create方法不能在Creator之外重用,所以它只能在创建一个新的Creator时重用? 有什么情况我可以选择一个而不是另一个? (PS请不要将此标记为重复,我想在此网站上明确这一点)