Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 将客户与产品分离?_Algorithm_Design Patterns - Fatal编程技术网

Algorithm 将客户与产品分离?

Algorithm 将客户与产品分离?,algorithm,design-patterns,Algorithm,Design Patterns,我在读一篇文章,Sudhakar Kalmari写道,“当需要将客户机与其使用的特定产品分离时,使用工厂方法模式。”我不明白这意味着什么。据我所知,耦合是指方法或类与其他依赖项硬编码的程度。我假设他所指的客户是任何调用它的方法,但我不知道他使用“产品”这个词时的意思 有人能解释一下这个术语,并解释一下他在这里想要表达的意思吗 在文章的开头,他列出了构成设计模式的一些不同组件;主要是工厂方法、抽象产品、具体产品和客户 Use the Factory Method pattern when ther

我在读一篇文章,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.
“产品”一词是指由工厂/生产/并由调用者(客户)使用的对象。客户机可以直接创建这些对象,但它将负责了解特定的对象类型和实现细节(“具体产品”),将调用方与代码耦合

为了“免除客户的责任”,我们将引入一个抽象类或接口(“抽象产品”),由每个“具体产品”实现。factory方法将返回此抽象类型,客户端将调用factory方法来创建所需的对象。客户机现在已与任何特定实现解耦,只需要了解抽象类型(及其工厂)

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

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