乍看之下,服务定位器模式看起来与抽象工厂模式相同。 他们似乎有相同的用途(你查询他们接收抽象服务的实例),他们都已经提到,当我读到dependency injection。 但是, 我已经将Service Locator模式描述为一个糟糕的主意 ,但是至less在一个主要的Dependency Injection框架中直接支持Abstract Factory模式 。 如果他们不一样,有什么区别?
C#中抽象工厂模式的好例子? C#中抽象工厂模式的优点是什么? 如何在抽象工厂模式中使用C#generics? 如何用抽象工厂模式进行unit testing?
任何人都可以解释工厂和战略模式之间的区别吗? 对于我来说,除了额外的工厂类别(它们以工厂模式创build产品对象)之外,
我对这三个术语非常困惑。 我的理解是: 在工厂模式中,没有具体的工厂。 工厂根据参数build立新的对象。 在抽象工厂模式中,有多个具体的工厂。 客户必须明确地创build不同的混凝土工厂。 是对的吗? 其他的区别是什么? 此外,什么是工厂方法模式? 与工厂模式相同吗?
注意:问题在post末尾。 我已经阅读了关于抽象工厂VS工厂方法的其他stackoverflow线程。 我了解每种模式的意图。 但是,我不清楚这个定义。 Factory Method定义了一个用于创build对象的接口,但是可以让子类决定实例化哪个接口。 工厂方法让类将实例化推迟到子类。 相比之下,抽象工厂提供了一个接口,用于创build相关或依赖对象的族,而不指定具体的类。 – John Feminella 抽象工厂看起来与工厂方法非常相似。 我画了几个UML类来说明我的观点。 注意: 该图来自www.yuml.com,因此它们并不完美。 但是它的免费服务:)。 图表可能不完美。 我仍然在学习GoF的devise模式。 工厂方法: 抽象工厂(只有1个成员): 抽象工厂(更多会员): 问题: 如果抽象工厂只有一个创build者和一个产品,它仍然是抽象工厂模式吗? (创build家庭的界面) 工厂方法的具体创build者可以从一个接口创build吗?还是必须来自一个类? (类将实例化推迟到子类) 如果抽象工厂只能有一个创build者和一个产品,那么抽象工厂和工厂方法之间的唯一区别是,前者的创build者是一个接口,而后者的创build者是一个类?
工厂和抽象工厂模式之间的基本区别是什么?
大部分的定义是: 抽象工厂提供了一个创build相关对象族的界面,而不需要指定具体的类 什么是抽象工厂模式的使用,因为我们可以通过创build具体类本身的对象来实现任务。 为什么我们有一个创build具体类的对象的工厂方法? 请给我提供我必须实现abstractFactory模式的真实例子吗?
我知道这里有很多关于这两种模式差异的post,但是有一些我找不到的东西。 从我一直在阅读的文章中,我发现工厂方法模式允许你定义如何创build一个具体的产品,但隐藏客户端的实现,因为他们会看到一个通用的产品。 我的第一个问题是关于抽象工厂。 它的作用是允许你创build具体对象的家族(这取决于你使用的具体工厂)而不是仅仅一个具体的对象? 抽象工厂是否只返回一个非常大的对象或许多对象,取决于你调用的方法? 我最后的两个问题是关于我在许多地方看到的一句话,我不能完全理解: 两者之间的一个区别是,使用抽象工厂模式,类将委托对象实例化的责任通过组合而另一个对象,而工厂方法模式使用inheritance,并依赖于一个子类来处理所需的对象实例化。 我的理解是,工厂方法模式有一个Creator接口,这将使ConcreteCreator负责知道哪个ConcreteProduct实例化。 这是通过使用inheritance来处理对象实例吗? 现在关于这个引用,Abstract Factory模式究竟是如何将对象实例化的责任委托给另一个对象的? 这是什么意思? 看起来抽象工厂模式也使用inheritance来完成build造过程,但我仍然在学习这些模式。 任何帮助,尤其是最后一个问题,将不胜感激。