如果每个ConcreteStrategy与DataStorage对话时如何修改经典策略模式?有不同类型的数据存储,接口取决于具体的策略。
答案 0 :(得分:1)
通过构造函数注入使您的策略依赖于DataStorage。然后每个策略都可以随意使用DataStorage。
如果DataStorage实现了许多接口,请使每个策略都依赖于该特定接口。
答案 1 :(得分:0)
简短的回答可能是:
首先定义数据存储的通用接口,如:
Query()
Update()
Delete()
Add()
Create()
其次,在每个具体的数据存储实现类中实现这些接口。
当你使用这些类对象时,你通过接口方法调用方法,真正的任务载体是特定的对象。
答案 2 :(得分:0)
请记住,模式只是一般的事情。你可以做任何你需要的东西,使这种模式适合你的情况。你可以将你的策略与Factory,Memento等结合起来。现在每个人都在谈论“注射”。但是使用接口已经存在了很长时间。
public class ConcreteStrategy : IStrategy
{
protected IDatastorage _dataStrorage;
}
这应该这样做