Java 为什么在策略设计模式中需要上下文类?
为什么在策略模式中需要上下文类 例如,我想使用zip或rar压缩来压缩文件。我们可以通过以下文件使用策略模式来解决此问题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
1.ICompressionStrategy...Its interface
2.ZipCompressionStrategy ..implements IcompressionStrategy
3.RarCompressionStrategy ..implements IcompressionStrategy
4.CompressionContext..Inject IcompressionStrategy
5.Client..Inject CompressionContext
在上面的场景中,我们为什么需要CompressionContext类?为什么我不能将IcompressionStrategy注入客户端类
在上述场景中使用CompressionContext类的优势是什么?我可以避免吗
这是我正在谈论的一个例子
策略模式的思想是使用可变策略自定义任务的某些部分
在上面的示例中,上下文不仅仅是压缩文件列表。例如,它可以是一个类,该类遍历文件夹层次结构,选择要压缩的文件,将其放入列表,使用压缩策略,并将压缩结果写入另一个位置。该算法可以通过提供压缩策略进行定制,该策略仅用于整个算法的压缩步骤。
上下文
可以将客户端
和策略
解耦如果没有
上下文
,当您想要更改策略
的界面时,您也必须更改客户端
中的界面。但是,您可能无权更改
客户端
,否则可能会导致合并冲突。但是如果存在
上下文
,您只需要更改上下文
的实现,而不需要更改客户端
这是有道理的。谢谢你!。。你能给我推荐一本详细学习设计模式的好链接或书吗?维基百科是一个很好的设计模式资源。您可以参考(请参见“按类型排列的图案”部分)