如果每个 ConcreteStrategy 都与 DataStorage 对话,如何修改经典策略模式?有不同类型的数据存储,接口取决于具体的策略。
问问题
107 次
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 回答