小编Cha*_*les的帖子

用多态替换条件 - 理论上很好但不实用

"替换条件与多态"只有在您正在为您选择切换/ if语句的对象类型时才是优雅的.作为一个例子,我有一个Web应用程序,它读取一个名为"action"的查询字符串参数.动作可以具有"视图","编辑","排序"等值.那么如何用多态实现呢?好吧,我可以创建一个名为BaseAction的抽象类,并从中派生ViewAction,EditAction和SortAction.但是,我不需要条件来决定实例化哪种类型的BaseAction?我不知道如何用多态完全替换条件.如果有的话,条件只会被推到链的顶端.

编辑:

public abstract class BaseAction
{
    public abstract void doSomething();
}

public class ViewAction : BaseAction
{
    public override void doSomething() { // perform a view action here... }
}

public class EditAction : BaseAction
{
    public override void doSomething() { // perform an edit action here... }
}

public class SortAction : BaseAction
{
    public override void doSomething() { // perform a sort action here... }
}


string action = "view";  // suppose user can pass either …
Run Code Online (Sandbox Code Playgroud)

polymorphism refactoring conditional

26
推荐指数
3
解决办法
1万
查看次数

标签 统计

conditional ×1

polymorphism ×1

refactoring ×1