Tag: 工厂模式

这是工厂方法创build模式?

现在我一直在使用工厂方法创build模式。 我刚刚才被告知这个: public static class ScheduleTypeFactory { public static IScheduleItem GetScheduleItem(ScheduleTypeEnum scheduleType) { IScheduleItem scheduleItem = null; switch (scheduleType) { case ScheduleTypeEnum.CableOnDemandScheduleTypeID: { scheduleItem = new VODScheduleItem(); break; } case ScheduleTypeEnum.BroadbandScheduleTypeID: { scheduleItem = new VODScheduleItem(); break; } case ScheduleTypeEnum.LinearCableScheduleTypeID: { scheduleItem = new LinearScheduleItem(); break; } case ScheduleTypeEnum.MobileLinearScheduleTypeID: { scheduleItem = new LinearScheduleItem(); break; […]

工厂和战略模式有什么区别?

任何人都可以解释工厂和战略模式之间的区别吗? 对于我来说,除了额外的工厂类别(它们以工厂模式创build产品对象)之外,

在实现工厂devise模式时如何避免“instanceof”?

我试图实现我的第一个工厂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不同的混凝土工厂。 是对的吗? 其他的区别是什么? 此外,什么是工厂方法模式? 与工厂模式相同吗?

Builderdevise模式和Factory Design模式有什么区别?

Builderdevise模式和Factorydevise模式有什么区别? 哪一个更有利,为什么? 如果我想对这些模式进行testing和比较/对比,如何将我的发现表示为图表?

“downcasting”unique_ptr <Base>到unique_ptr <Derived>

我有一系列返回unique_ptr<Base>的工厂。 然而,它们提供了指向各种派生types的指针,即unique_ptr<Derived> , unique_ptr<DerivedA> , unique_ptr<DerivedB>等。 鉴于DerivedA : Derived和Derived : Base我们会有: unique_ptr<Base> DerivedAFactory() { return unique_ptr<Base>(new DerivedA); } 我需要做的就是将指针从返回的unique_ptr<Base>到某个派生级别(不一定是原来的内部级别)。 为了说明伪代码: unique_ptr<Derived> ptr = static_cast<unique_ptr<Derived>>(DerivedAFactory()); 我正在考虑通过从unique_ptr释放对象,然后使用一个函数来转换原始指针并将其重新分配给另一个所需flavor的unique_ptr ( release将在调用之前由调用方明确完成): unique_ptr<Derived> CastToDerived(Base* obj) { return unique_ptr<Derived>(static_cast<Derived*>(obj)); } 这是有效的,还是会有一些质朴的事情呢? PS。 还有一个复杂的问题,一些工厂驻留在运行时dynamic加载的DLL中,这意味着我需要确保生成的对象在创build时在相同的上下文(堆空间)中被销毁。 所有权的转移(通常发生在另一个环境中)必须从原始上下文中提供一个删除者。 但是除了必须提供/删除指针以外,投射问题应该是相同的。

为什么Hibernate不需要参数构造函数?

无参构造函数是一个需求(像Hibernate这样的工具在这个构造函数中使用reflection来实例化对象)。 我得到了这个手势波形的答案,但有人可以进一步解释吗? 谢谢

dependency injectionVS工厂模式

大多数的引用dependency injection的例子,我们也可以使用工厂模式来解决。 看起来,当涉及到使用/devise时,dependency injection和工厂之间的区别变得模糊或薄弱。 一旦有人告诉我,它如何使用它,有所作为! 我曾经使用过StructureMap的一个DI容器来解决一个问题,后来我重新devise了一个简单的工厂,去掉了对StructureMap的引用。 谁能告诉我他们之间有什么区别,在哪里使用什么,这里最好的做法是什么?

抽象工厂模式与工厂方法的区别

我知道这里有很多关于这两种模式差异的post,但是有一些我找不到的东西。 从我一直在阅读的文章中,我发现工厂方法模式允许你定义如何创build一个具体的产品,但隐藏客户端的实现,因为他们会看到一个通用的产品。 我的第一个问题是关于抽象工厂。 它的作用是允许你创build具体对象的家族(这取决于你使用的具体工厂)而不是仅仅一个具体的对象? 抽象工厂是否只返回一个非常大的对象或许多对象,取决于你调用的方法? 我最后的两个问题是关于我在许多地方看到的一句话,我不能完全理解: 两者之间的一个区别是,使用抽象工厂模式,类将委托对象实例化的责任通过组合而另一个对象,而工厂方法模式使用inheritance,并依赖于一个子类来处理所需的对象实例化。 我的理解是,工厂方法模式有一个Creator接口,这将使ConcreteCreator负责知道哪个ConcreteProduct实例化。 这是通过使用inheritance来处理对象实例吗? 现在关于这个引用,Abstract Factory模式究竟是如何将对象实例化的责任委托给另一个对象的? 这是什么意思? 看起来抽象工厂模式也使用inheritance来完成build造过程,但我仍然在学习这些模式。 任何帮助,尤其是最后一个问题,将不胜感激。

我如何将值传递给我的wcf服务的构造函数?

我想将值传递给实现我的服务的类的构造函数。 然而,ServiceHost只允许我传入要创建的类型的名称,而不是传递给它的控制器的参数。 我希望能够通过一个创建我的服务对象的工厂。 到目前为止我发现的是: WCF依赖注入行为 ,这比我正在寻找更多,似乎是我的需求过于复杂。