当我们使用抽象工厂模式
时,我们通常有FactoryMaker
类,它有一个GetFactory
函数,我们在这个函数中传递参数,我们在传递参数的函数中有switch
或if-else
逻辑,以决定返回哪个工厂。是创建传递的参数、枚举或对象,然后在这些对象中具有返回哪个工厂的逻辑会更好。例如:
让我们这样说吧,我们的工厂制造商是通过枚举国家代码来决定工厂的。
public class FacoryMaker { public final static FacoryMaker fctry= new FacoryMaker(); public static RetailFactory getFactory(CountryCode code){ RetailFactory rt = null; if(code == CountryCode.UK){ rt = new UKFactory(); } if(code == CountryCode.US){ rt = new USFactory(); } return rt; } }
取而代之的是:
public class FacoryMaker { public final static FacoryMaker fctry= new FacoryMaker(); public static RetailFactory getFactory(CountryCode code){ return code.getFactory(); } }
和枚举将进行如下修改:
public enum CountryCode { US(){ @Override public RetailFactory getFactory() { return new USFactory(); } }, UK(){ @Override public RetailFactory getFactory() { return new UKFactory(); } }; public abstract RetailFactory getFactory(); }
但我不认为这是普遍遵循的。为什么会这样?为什么我们不能让传递的参数始终是一个对象,并且在对象内部有逻辑来获取哪个工厂的呢?它能在任何抽象的工厂设计下失败吗。在我看来很普通。此外,通过这一点,甚至可以删除工厂制造商,并直接使用对象来获取工厂实例。
我认为抽象工厂是所有OOP语言的通用模式。当人们描述它时,他们应该展示一个通用的实现,它可以应用于所有这些语言。然后人们遵循模式,遵循一般的实现。
并且您的实现使用的是Enum,Java特别支持Enum,但其他OOP语言不支持Enum。
4. 抽象工厂(Abstract Factory) Intent 提供一个接口,用于创建 相关的对象家族 。 Class Diagram 抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂方法模式只是用于创建一个对象,这和抽象工厂模式有很大不同。 抽象工厂模式用到了工厂方法模式来创建单一对象,AbstractFactory 中的 cr
工厂-创建对象而不向客户机公开实例化逻辑,并通过公共接口引用新创建的对象。是工厂方法的简化版本 工厂方法-定义一个创建对象的接口,但让子类决定实例化哪个类,并通过公共接口引用新创建的对象。 抽象工厂-提供了创建相关对象家族的接口,而无需显式指定它们的类。 null
我正在努力学习创造性设计模式,我想我现在理解了工厂方法模式。但在转向抽象工厂模式时,我找不到它的用途。我知道我错过了一些东西,但不知道在哪里。 在抽象工厂模式中,我们将有一个抽象工厂,混凝土工厂将返回实例。假设我们正在处理汽车的创建。我们将有一个像这样的抽象工厂 我们的混凝土工厂将是 在用户类中,我们将像 我认为我们也可以使用工厂模式构建相同的功能 在用户类中,我们可以 如果我的理解是正确的(如果
本文向大家介绍C++设计模式之抽象工厂模式,包括了C++设计模式之抽象工厂模式的使用技巧和注意事项,需要的朋友参考一下 问题描述 之前讲到了C++设计模式——工厂方法模式,我们可能会想到,后期产品会越来越多了,建立的工厂也会越来越多,工厂进行了增长,工厂变的凌乱而难于管理;由于工厂方法模式创建的对象都是继承于Product的,所以工厂方法模式中,每个工厂只能创建单一种类的产品,当需要生产一种全新的
在抽象工厂模式中,涉及的主要实体是 抽象基地工厂 混凝土工厂每个延伸抽象基地工厂 客户端代码 基础产品 扩展基础产品的具体产品类别 我看过各种实现,并观察到客户机代码了解具体的工厂。根据我在不同地方看到的模式的共同定义,如下所示 定义一个用于创建对象的接口,但让子类来决定要实例化哪个类。 根据我的观察,是作为抽象工厂方法中的抽象方法实现的。它公开了一个非抽象的公共方法,比如,从中调用方法。根据具体
本文向大家介绍Java设计模式之工厂模式分析【简单工厂、工厂方法、抽象工厂】,包括了Java设计模式之工厂模式分析【简单工厂、工厂方法、抽象工厂】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java设计模式之工厂模式。分享给大家供大家参考,具体如下: 一、 简单工厂 先来思考一个问题。我们平时写程序时,会有这种情况,A对象里面需要调用B对象的方法,这时我们使用的一般是new关键字来创建