枚举
- Opt.java 接口
package design;
public interface Opt {
void operation();
}
- OptEnum.java
package design;
public enum OptEnum implements Opt {
A{
@Override
public void operation() {
System.out.println("A-opt");
}
},
B{
@Override
public void operation() {
System.out.println("B");
}
};
public static void main(String[] args) {
String param = "A";
OptEnum.valueOf(param).operation();
}
}
- 运行结果:
策略模式
-
Opt.java 接口(相当于策略模式定义中的 Strategy 接口),和上边一样;
-
策略类:Aopt.java;Bopt.java;
-
Aopt.java
package design.strategy;
import design.Opt;
public class Aopt implements Opt {
@Override
public void operation() {
System.out.println("A-opt");
}
}
- Bopt.java
package design.strategy;
import design.Opt;
public class Bopt implements Opt {
@Override
public void operation() {
System.out.println("B");
}
}
- Context.java
package design.strategy;
import design.Opt;
import java.util.HashMap;
import java.util.Map;
public class Context {
static Map<String,Opt> stgMap = new HashMap<>();
static {
stgMap.put("A", new Aopt());
stgMap.put("B", new Bopt());
}
private Opt stg;
public Context(Opt stg) {
this.stg = stg;
}
public Context() {
}
public void doAction() {
this.stg.operation();
}
public void doAction(String type) {
stgMap.get(type).operation();
}
public static void main(String[] args) {
Context context = new Context(new Aopt());
context.doAction();
// 或者
Context context1 = new Context();
context1.doAction("B");
}
}
- 运行结果: