1

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

4

3 回答 3

1

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

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

于 2013-09-05T08:12:26.270 回答
0

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

public class ConcreteStrategy : IStrategy 
{
    protected IDatastorage _dataStrorage;
} 

这应该这样做

于 2013-09-06T20:57:37.893 回答
0

一个简短的答案可能是:

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

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

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

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

于 2013-09-05T07:49:30.273 回答