我是Java的初学者,我用来学习的书似乎有一些神秘的例子和句子,完全让我感到困惑。
我理解什么是接口,以及如何/在实际世界中应用这个概念。但是工厂的方法是什么呢?术语“工厂方法”是模棱两可的(JavaScript对此有不同的含义),因此,为了澄清我的问题,我提供了这本书中的片段。以下是代码:
interface Service {
void method1();
void method2();
}
interface ServiceFactory {
Service getService();
}Service接口只是一个普通的接口。ServiceFactory接口看起来像一个正常的接口,但它是一个“工厂方法”。那是什么?它能解决什么问题,为什么我要使用它们?
发布于 2016-08-03 05:25:12
“工厂方法”是构造对象的方法。
更具体地说,术语通常指的是一个静态方法,它返回其声明类的一个实例(一个直接实例,或者一个子类实例)。根据我的经验,在一些情况下,这种做法特别常见:
因此,您的示例并不真正涉及“工厂方法”IMHO,但您可以稍微欺骗一下,并将getService()描述为其中的一个。(相反,我只想把ServiceFactory描述为“工厂”。)ServiceFactory.getService()的好处与工厂方法的好处相同,加上拥有实例而不是静态方法的通常好处。
发布于 2016-08-03 05:24:40
工厂方法是一个简单的方法,它包围了一个对象的创建。在您的示例中,您没有像通常那样使用new操作符来创建一个代替Service,而是在某些对象上使用了工厂方法。
ServiceFactory sf = new ServiceFactoryImpl();
// factory method
Service s = sf.getService();为了更好地说明该方法的作用,可以将其称为createService。现在,该方法封装了创建Service的细节,您可以提供多种类型的方法(通过重载),您可以让它根据上下文或传递给工厂方法的参数返回不同的子类。
https://stackoverflow.com/questions/38734887
复制相似问题