java - Java 接口(interface)上下文中的 "Factory Method Design Pattern"?

标签 java design-patterns interface factory-method

我是 Java 初学者,我用来学习 Java 的书似乎有一些晦涩难懂的示例和句子,让我完全困惑。

我了解什么是接口(interface)以及如何/在何处应用该概念在现实世界中。但什么是工厂方法呢? “工厂方法”一词含糊不清(JavaScript 对此有不同的含义),因此我提供了本书的片段,以便使我的问题更加清楚。这是代码:

interface Service {
    void method1();
    void method2();
}

interface ServiceFactory {
    Service getService();
}

Service 接口(interface)只是一个普通接口(interface)。 ServiceFactory 接口(interface)看起来像一个普通接口(interface),但它是一个“工厂方法”。那是什么?它解决了什么问题以及为什么我应该使用它们?

最佳答案

工厂方法只是封装对象创建的方法。在您的示例中,您不是像通常创建 Service 那样使用 new 运算符,而是在某个对象上使用工厂方法。

ServiceFactory sf = new ServiceFactoryImpl();
// factory method
Service s = sf.getService();

为了更好地说明该方法的作用,可以改为调用 createService。现在该方法封装了创建 Service 的详细信息,您可以提供许多风格的方法(通过重载),您可以让它根据上下文返回不同的子类,或者传递给工厂方法。

关于java - Java 接口(interface)上下文中的 "Factory Method Design Pattern"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38734887/

相关文章:

java - 查询返回多条记录

java - 如何在ehcache.xml中配置QueryCache

java - 执行 "m1=null; m2=null;"后有多少对象可以进行垃圾回收?

design-patterns - 从概念上讲,重播在游戏中是如何运作的?

asp.net - 全文搜索最接近的匹配项

COM 服务器缺少接口(interface)

java - 搜索具有特定范围内的属性值的对象的 ArrayList

java - 如何实现通用接口(interface)列表

c# - 为什么 C# 接口(interface)不能包含字段?

Python MixIn 标准