策略模式修改

时间:2013-09-05 07:31:19

标签: design-patterns strategy-pattern

如果每个ConcreteStrategy与DataStorage对话时如何修改经典策略模式?有不同类型的数据存储,接口取决于具体的策略。

3 个答案:

答案 0 :(得分:1)

通过构造函数注入使您的策略依赖于DataStorage。然后每个策略都可以随意使用DataStorage。

如果DataStorage实现了许多接口,请使每个策略都依赖于该特定接口。

答案 1 :(得分:0)

简短的回答可能是:

首先定义数据存储的通用接口,如:

Query()
Update()
Delete()
Add()
Create()

其次,在每个具体的数据存储实现类中实现这些接口。

当你使用这些类对象时,你通过接口方法调用方法,真正的任务载体是特定的对象。

答案 2 :(得分:0)

请记住,模式只是一般的事情。你可以做任何你需要的东西,使这种模式适合你的情况。你可以将你的策略与Factory,Memento等结合起来。现在每个人都在谈论“注射”。但是使用接口已经存在了很长时间。

public class ConcreteStrategy : IStrategy 
{
    protected IDatastorage _dataStrorage;
} 

这应该这样做