Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.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
Java 为什么在策略设计模式中需要上下文类?_Java_Design Patterns_Strategy Pattern - Fatal编程技术网

Java 为什么在策略设计模式中需要上下文类?

Java 为什么在策略设计模式中需要上下文类?,java,design-patterns,strategy-pattern,Java,Design Patterns,Strategy Pattern,为什么在策略模式中需要上下文类 例如,我想使用zip或rar压缩来压缩文件。我们可以通过以下文件使用策略模式来解决此问题 1.ICompressionStrategy...Its interface 2.ZipCompressionStrategy ..implements IcompressionStrategy 3.RarCompressionStrategy ..implements IcompressionStrategy 4.CompressionContext..Inject Ico

为什么在策略模式中需要上下文类

例如,我想使用zip或rar压缩来压缩文件。我们可以通过以下文件使用策略模式来解决此问题

1.ICompressionStrategy...Its interface
2.ZipCompressionStrategy ..implements IcompressionStrategy
3.RarCompressionStrategy ..implements IcompressionStrategy
4.CompressionContext..Inject IcompressionStrategy
5.Client..Inject CompressionContext
在上面的场景中,我们为什么需要CompressionContext类?为什么我不能将IcompressionStrategy注入客户端类

在上述场景中使用CompressionContext类的优势是什么?我可以避免吗

这是我正在谈论的一个例子


策略模式的思想是使用可变策略自定义任务的某些部分


在上面的示例中,上下文不仅仅是压缩文件列表。例如,它可以是一个类,该类遍历文件夹层次结构,选择要压缩的文件,将其放入列表,使用压缩策略,并将压缩结果写入另一个位置。该算法可以通过提供压缩策略进行定制,该策略仅用于整个算法的压缩步骤。

上下文
可以将
客户端
策略
解耦
如果没有
上下文
,当您想要更改
策略
的界面时,您也必须更改
客户端
中的界面。
但是,您可能无权更改
客户端
,否则可能会导致合并冲突。

但是如果存在
上下文
,您只需要更改
上下文
的实现,而不需要更改
客户端

这是有道理的。谢谢你!。。你能给我推荐一本详细学习设计模式的好链接或书吗?维基百科是一个很好的设计模式资源。您可以参考(请参见“按类型排列的图案”部分)