当每个ConcreteStrategy都与DataStorage对话时,如何修改经典的策略模式?数据存储有不同的类型,接口取决于具体的策略。
发布于 2013-09-05 16:12:26
通过构造函数注入使您的策略依赖于DataStorage。然后每种策略都可以随心所欲地使用DataStorage。
如果DataStorage实现了许多接口,请使每个策略都依赖于该特定接口。
发布于 2013-09-05 15:49:30
一个简短的答案可能是:
首先定义用于数据存储的通用接口,如下所示:
Query()
Update()
Delete()
Add()
Create()其次,在每个具体的数据存储实现类中实现这些接口。
当你使用这些类对象时,你通过接口方法调用方法,真正的任务载体是特定的对象。
发布于 2013-09-07 04:57:38
记住,模式只是一件普通的事情。你可以做任何你需要做的事情,让这个模式在你的情况下工作。你可以将你的策略与Factory,Memento等结合起来。现在每个人都在谈论“注入”。但是使用接口已经存在很长时间了。
public class ConcreteStrategy : IStrategy
{
protected IDatastorage _dataStrorage;
} 这应该就行了
https://stackoverflow.com/questions/18630320
复制相似问题