将客户与产品解耦?

问题描述:

我在读so article on design patterns和Sudhakar Kalmari写道:“当需要将客户端与其使用的特定产品分离时,请使用工厂方法模式。”我不明白这是什么意思。据我所知,耦合是一种方法或类与其他依赖关系硬编码的程度。我假设他所指的客户是任何方法,但我不知道他在使用“产品”这个词时意味着什么。将客户与产品解耦?

有人可以解释这个术语,也解释他在这里尝试沟通什么?

在文章的开头他列出了构成设计模式的一些不同的组件;主要是工厂方法,抽象产品,混凝土产品和客户。

Use the Factory Method pattern when there is a need to decouple a client from a 
particular product that it uses. Use the Factory Method to relieve a client of 
responsibility for creating and configuring instances of a product. 

“产品”一词指的是工厂生产/调用者(客户)使用的对象。客户端可以直接创建这些对象,但它将负责了解特定的对象类型和实现细节(“具体产品”),将调用者耦合到该代码。为了“减轻责任的客户”,我们将引入由每个“具体产品”实现的抽象类或接口(“抽象产品”)。工厂方法将返回这个抽象类型,客户端将调用工厂方法来创建它需要的对象。客户端现在与任何特定的实现分离,只需要知道抽象类型(及其工厂)。

工厂方法“负责创建和配置产品的实例”。它知道抽象类型的各种实现,并可以创建这些实现并将其返回给客户端。调用者不需要关心它接收哪个“具体产品”,只需要处理给定的抽象类型。

使用工厂方法,我们可以更改实现细节(向我们的工厂添加或修改“具体产品”),而无需更改客户端本身的实现,也无需将客户端连接到“特定产品”。