BZi*_*ink 8 c# design-patterns solid-principles
我正在处理的一个应用程序处理工作项.根据工作项的状态,可以使用许多操作."完成""取消""重新分配"等...
为了提供动作的功能,我现在有一个看起来像这样的界面......
public interface IActionProvider{
public void Complete(WorkItem workItem);
public void Cancel (WorkItem workItem);
public void Reassign(WorkItem workItem);
}
Run Code Online (Sandbox Code Playgroud)
然后根据工作项的其他细节,我有接口的具体实现.仅举例......
public class NormalActionProvider :IActionProvider
{
...
}
Run Code Online (Sandbox Code Playgroud)
和
public class UrgentActionProvider : IActionProvider
{
....
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果我想添加一个新动作,请说......"委托"我必须更新界面,当然这对所有实现都有影响.
这违反了开/关原则吗?你能推荐一个可以帮助我的设计模式或重构吗?
iso*_*bar 11
看起来命令模式是合适的.您可以修改/添加更多命令.命令类与主程序分离.
public interface IActionProvider{
public void execute(WorkItem item,ActionType actionType);
}
Run Code Online (Sandbox Code Playgroud)
ActionType表示完成,取消等.您可以继续添加更多操作类型和插件适当的命令类.
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |