java - 策略模式的真实示例

标签 java c# design-patterns strategy-pattern

我一直在阅读 OCP principle以及如何使用策略模式来实现这一点。

我打算尝试向几个人解释这一点,但我能想到的唯一示例是根据“订单”的状态使用不同的验证类。

我在网上阅读了几篇文章,但这些文章通常不会描述使用该策略的真正相似原因,例如生成报告/账单/验证等...

在现实世界中,您是否认为策略模式很常见?

最佳答案

这个呢:

您必须加密文件。

对于小文件,您可以使用“内存中”策略,将完整的文件读取并保存在内存中(假设文件 < 1 gb)

对于大文件,您可以使用另一种策略,将部分文件读取到内存中,将部分加密结果存储在 tmp 文件中。

对于同一任务,这可能是两种不同的策略。

客户端代码看起来相同:

 File file = getFile();
 Cipher c = CipherFactory.getCipher( file.size() );
 c.performAction();



// implementations:
interface  Cipher  {
     public void performAction();
}

class InMemoryCipherStrategy implements Cipher { 
         public void performAction() {
             // load in byte[] ....
         }
}

class SwaptToDiskCipher implements Cipher { 
         public void performAction() {
             // swapt partial results to file.
         }

}

     Cipher c = CipherFactory.getCipher( file.size() );

将为密码返回正确的策略实例。

我希望这会有所帮助。

(我什至不知道 Cipher 是不是正确的词:P)

关于java - 策略模式的真实示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/370258/

相关文章:

c# - MS Chart ChartImageHandler 存储选项

c# - 修复 Angular 6 项目中的显示表

oop - 耦合 - 除了更改方法签名或返回类型之外,更改一个模块如何影响另一个模块?

model-view-controller - 胖模型和瘦 Controller 听起来就像创造上帝模型

java - For 循环将自定义对象添加到 arraylist n 次 - Java8

java - 为Google map 创建插件

java - android中如何获取drawable图片路径?

java - 如何解释/***/在java中?

java - 强制Java中的类调用方法

c# - 如何在 C# 中使用 SerialPort 端口对象的 dataReceived 事件?