如何使用内部有另一个策略的策略来实现策略模式?
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
的子类。这样,您可以通过在 ProcessOnFileNetwork
的 process()
方法中调用 super.process()
来访问 ProcessOnFile
的 process()
方法中的逻辑。
您可能只是在问题中输入了代码,但为了以防万一,interface
和 implements
必须全部小写。
您可以使用抽象的 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也可以有数据变量,可以利用。
我正在实施一个策略模式,在特定情况下,一个策略必须使用另一个策略实施作为它的一部分。
例如:
interface ProcessStrategy{
void process();
}
public class ProcessOnFile implements ProcessStrategy{
void process(){
}
}
public class ProcessOnFileNetwork implements ProcessStrategy{
void process(){
}
}
在这种情况下,processOnFileNetwork 将封装 ProcessOnFile 中的逻辑以及一些特定的逻辑..
如何在不重复代码的情况下添加此功能?
谢谢!
您可以使 ProcessOnFileNetwork
成为 ProcessOnFile
的子类。这样,您可以通过在 ProcessOnFileNetwork
的 process()
方法中调用 super.process()
来访问 ProcessOnFile
的 process()
方法中的逻辑。
您可能只是在问题中输入了代码,但为了以防万一,interface
和 implements
必须全部小写。
您可以使用抽象的 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也可以有数据变量,可以利用。