Questions tagged «factory»

“工厂”是创建对象的面向对象编程模式的通用术语。代替此标签,请在适当的情况下将标签用于特定的四种模式的组合[工厂方法]或[抽象工厂]。



7
设计模式:工厂vs工厂方法vs抽象工厂
我正在从网站上阅读设计模式 我在这里读到了有关Factory,Factory方法和Abstract工厂的信息,但是它们是如此混乱,在定义上不清楚。根据定义 工厂-创建对象而不将实例化逻辑暴露给客户端,并通过通用接口引用新创建的对象。是Factory Method的简化版本 工厂方法-定义用于创建对象的接口,但让子类决定要实例化的类,并通过通用接口引用新创建的对象。 抽象工厂-提供用于创建相关对象族的接口,而无需显式指定其类。 我还查看了有关抽象工厂与工厂方法的其他stackoverflow线程,但是在那里绘制的UML图使我的理解更糟。 谁能告诉我 这三种模式有何不同? 什么时候使用? 还有可能的话,是否有与这些模式相关的Java示例?

11
如何命名工厂之类的方法?
我猜想大多数类似工厂的方法都是以开头的create。但是为什么将它们称为“ 创建 ”?为什么不“ 制作 ”,“ 产生 ”,“ 建立 ”,“ 产生 ”或其他?只是口味问题吗?约定?还是“创建”中有特殊含义? createURI(...) makeURI(...) produceURI(...) buildURI(...) generateURI(...) 您一般会选择哪一个,为什么?

9
有没有办法从持有类名的字符串中实例化对象?
我有一个文件:Base.h class Base; class DerivedA : public Base; class DerivedB : public Base; /*etc...*/ 和另一个文件:BaseFactory.h #include "Base.h" class BaseFactory { public: BaseFactory(const string &sClassName){msClassName = sClassName;}; Base * Create() { if(msClassName == "DerivedA") { return new DerivedA(); } else if(msClassName == "DerivedB") { return new DerivedB(); } else if(/*etc...*/) { …

3
java:comp / env /做什么?
我一天中花了太多时间试图找出一些连接JNDI工厂bean的错误。问题原来是,而不是这个... <bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/loc"/> </bean> 我实际上已经写过了... <bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="jdbc/loc"/> </bean> 我推断java:comp/env/也许引用了一些环境变量并使之生效,以便最终查看我的上下文文件。唯一的区别是java:comp/env/。从专家的口中,这是做什么的? java:comp/env/在值中没有前缀的情况下,我将收到一条错误消息,指出“名称jdbc在此上下文中未绑定”。
116 spring  jdbc  jndi  factory 

17
C#中的工厂模式:如何确保只能由工厂类创建对象实例?
最近,我一直在考虑保护我的一些代码。我很好奇如何确保一个对象永远不能直接创建,而只能通过工厂类的某种方法来创建。让我们说我有一些“业务对象”类,并且我想确保该类的任何实例都具有有效的内部状态。为了实现这一点,我将需要在创建对象之前(可能是在其构造函数中)执行一些检查。没关系,直到我决定我要使此检查成为业务逻辑的一部分。因此,如何安排业务对象只能通过我的业务逻辑类中的某种方法创建而不能直接创建?使用C ++的旧“ friend”关键字的第一个自然愿望将与C#脱节。所以我们需要其他选择... 让我们尝试一些示例: public MyBusinessObjectClass { public string MyProperty { get; private set; } public MyBusinessObjectClass (string myProperty) { MyProperty = myProperty; } } public MyBusinessLogicClass { public MyBusinessObjectClass CreateBusinessObject (string myProperty) { // Perform some check on myProperty if (true /* check is okay */) return new MyBusinessObjectClass …

8
AngularJS中的非单一服务
AngularJS在其文档中明确指出“服务是单例”: AngularJS services are singletons 违反直觉,module.factory也返回Singleton实例。 鉴于非单例服务有很多用例,实现工厂方法以返回Service实例的最佳方法是什么,以便每次ExampleService声明依赖项时,它的另一个实例都可以满足ExampleService?

5
AngularJS:工厂$ http.get JSON文件
我希望仅使用硬编码的JSON文件在本地进行开发。我的JSON文件如下(放入JSON验证程序时有效): { "contentItem": [ { "contentID" : "1", "contentVideo" : "file.mov", "contentThumbnail" : "url.jpg", "contentRating" : "5", "contentTitle" : "Guitar Lessons", "username" : "Username", "realname" : "Real name", "contentTags" : [ { "tag" : "Guitar"}, { "tag" : "Intermediate"}, { "tag" : "Chords"} ], "contentAbout" : "Learn how to play …
84 json  http  angularjs  factory 

7
Python中的类工厂
我是Python的新手,需要一些建议来实现以下方案。 我有两个用于在两个不同的注册商处管理域的类。两者具有相同的接口,例如 class RegistrarA(Object): def __init__(self, domain): self.domain = domain def lookup(self): ... def register(self, info): ... 和 class RegistrarB(object): def __init__(self, domain): self.domain = domain def lookup(self): ... def register(self, info): ... 我想创建一个Domain类,给定域名,该类基于扩展名加载正确的注册器类,例如 com = Domain('test.com') #load RegistrarA com.lookup() biz = Domain('test.biz') #load RegistrarB biz.lookup() 我知道这可以使用工厂功能来实现(请参见下文),但这是最好的方法还是使用OOP功能有更好的方法? def factory(domain): if …
70 python  factory 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.