繁体   English   中英

如何实现 Java 策略模式?

[英]How to implement Java Strategy pattern?

我有一个事件接口,对于每个实现的事件 class,我都有一个处理程序。 我正在解析一些字符串并返回事件。 我如何确定应使用 Spring 调用哪个处理程序。不使用 if 语句的主要目标是使其多态。 你有一些例子吗?

策略模式由以下组件组成:

  • 所有特定类通用的接口。 这是您的事件界面。
  • N个实现接口的具体类
  • 一个 class 维护对 object 的引用,其类型是您的接口类型,并使用具体类之一的实例进行初始化。

因此,如果 Strategy 确实是您需要或想要的模式:

public interface Event {
    Event handle(String value);
}

public class Event1 implements Event {
    Event1 handle(String value) {
      //do whatever
    }
}

public class Event2 implements Event {
    Event2 handle(String value) {
      //do whatever
    }
}

//etc...

public class StrategyClient {
    private Event event;
    private String value;
    public StrategyClient(Event event){
        this.event=event;
    }
    public Event handle(){
        event.handle(value);
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}

因此,您只需使用Event1Event2的实例或任何实现Event的类来初始化StrategyClient

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM