我想大多数工厂像方法开始create 。 但为什么他们叫做“ 创造 ”? 为什么不“ 制造 ”,“ 生产 ”,“ build造 ”,“ 生成 ”或其他? 这只是一个品味问题吗? 一个约定? 还是在“创造”中有特殊意义? createURI(…) makeURI(…) produceURI(…) buildURI(…) generateURI(…) 一般你会select哪一个,为什么?
我只是花了太多的时间试图在连接一些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 /可能会引用一些环境variables,并使得它最终会查看我的上下文文件。 唯一的区别是java:comp / env /。 从专家的口中,这是做什么的? 如果在值中没有java:comp / env前缀,我会得到一个错误,指出“名称jdbc未在此上下文中绑定”。
我正在从网站阅读devise模式 在那里,我读到了工厂,工厂方法和抽象工厂,但他们是如此混乱,不清楚的定义。 根据定义 工厂 – 创build对象而不会将实例化逻辑暴露给客户端,并通过通用接口引用新创build的对象。 是Factory Method的简化版本 工厂方法 – 定义创build对象的接口,但让子类决定实例化哪个类,并通过一个公共接口引用新创build的对象。 抽象工厂 – 提供用于创build相关对象族的界面,而不显式指定其类。 我也看了关于抽象工厂vs工厂方法的其他stackoverflow线程,但绘制在那里的UML图使我的理解更加糟糕。 任何人都可以告诉我 这三种模式如何不同? 什么时候用哪个? 还有,如果可能的话,任何有关这些模式的Java示例?
我试图实现我的第一个工厂devise模式,我不知道如何避免使用instanceof添加工厂制造的对象列表。 这就是我想要做的: for (ABluePrint bp : bluePrints) { AVehicle v = AVehicleFactory.buildVehicle(bp); allVehicles.add(v); // Can I accomplish this without using 'instanceof'? if (v instanceof ACar) { cars.add((ACar) v); } else if (v instanceof ABoat) { boats.add((ABoat) v); } else if (v instanceof APlane) { planes.add((APlane) v); } } 从我读过的东西,使用'instanceof'是一种代码味道。 有没有更好的方法来检查工厂创build的车型,而不使用“instanceof”? 我欢迎任何关于我的实施的反馈/build议,因为我甚至不确定我是否正确地采取这种方式。 下面的完整例子: import java.util.ArrayList; class […]
我对这三个术语非常困惑。 我的理解是: 在工厂模式中,没有具体的工厂。 工厂根据参数build立新的对象。 在抽象工厂模式中,有多个具体的工厂。 客户必须明确地创build不同的混凝土工厂。 是对的吗? 其他的区别是什么? 此外,什么是工厂方法模式? 与工厂模式相同吗?
这使我困惑,用最简单的话来说,它有什么作用? 假装你正在向你的母亲或某人求解。
你怎么能构造对象直接传递给你自己的类? 像这样的东西: Dim this_employee as Employee Set this_employee = new Employee(name:="Johnny", age:=69) 不能做到这一点非常烦人,而且最终会有肮脏的解决scheme来解决这个问题。
我正在使用这个: Tomcat 7.0 JSF 2.0 JRE 7 但是当试图运行我的应用程序时,我得到了以下exception: java.lang.IllegalStateException: Could not find backup for factory javax.faces.application.ApplicationFactory. at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1011) at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:343) at org.apache.myfaces.context.servlet.FacesContextImplBase.getApplication(FacesContextImplBase.java:159) at org.apache.myfaces.context.servlet.FacesContextImplBase.getELContext(FacesContextImplBase.java:210) at javax.faces.component.UIViewRoot.setLocale(UIViewRoot.java:1463) at org.apache.myfaces.webapp.AbstractFacesInitializer._createFacesContext(AbstractFacesInitializer.java:477) at org.apache.myfaces.webapp.AbstractFacesInitializer.initStartupFacesContext(AbstractFacesInitializer.java:449) at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:113) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at […]
什么时候在对象中使用工厂方法而不是Factory类是个好主意?
工厂和抽象工厂模式之间的基本区别是什么?