如何使用内部有另一个策略的策略来实现策略模式?

How to implement strategy pattern using a strategy that have another one inside?

我正在实施一个策略模式,在特定情况下,一个策略必须使用另一个策略实施作为它的一部分。

例如:

interface ProcessStrategy{

    void process();

}

public class ProcessOnFile implements ProcessStrategy{

    void process(){


    }
}

public class ProcessOnFileNetwork implements ProcessStrategy{

    void process(){


    }
}

在这种情况下,processOnFileNetwork 将封装 ProcessOnFile 中的逻辑以及一些特定的逻辑..

如何在不重复代码的情况下添加此功能?

谢谢!

您可以使 ProcessOnFileNetwork 成为 ProcessOnFile 的子类。这样,您可以通过在 ProcessOnFileNetworkprocess() 方法中调用 super.process() 来访问 ProcessOnFileprocess() 方法中的逻辑。

您可能只是在问题中输入了代码,但为了以防万一,interfaceimplements 必须全部小写。

您可以使用抽象的 class 概念。

public abstract class ProcessStrategy{
    public void process(){
        // Common code goes here
    }

}

public class ProcessOnFile extends ProcessStrategy{

    public void process(){
        super();
        // Class specific code goes here
    }
}

public class ProcessOnFileNetwork extends ProcessStrategy{

    public void process(){
        super();
        // Class specific code goes here
    }
}

笔记摘要classes也可以有数据变量,可以利用。