enum枚举实现策略模式

1 // 策略模式是为了简化if else判断
2 String type = "dog";
3 if(type.eques("dog")){
4     System.out.print("汪汪汪");
5 }else if(type.eques("cat")){
6     System.out.print("M喵喵喵");
7 }

if else显得代码很不简介

下面使用策略模式处理:

 1 public interface Animal {
 2 
 3     void bark();
 4 }
 5 ----
 6 public class Cat implements Animal {
 7     @Override
 8     public void bark() {
 9         System.out.println("喵喵喵");
10     }
11 }
12 ---
13 public class Dog implements Animal, ApplicationContextAware {
14     private ApplicationContext applicationContext;
15     @Override
16     public void bark() {
17         System.out.println("汪汪汪");
18         Object nanhxgoodMapper = applicationContext.getBean("nanhxgoodMapper");
19     }
20 
21     @Override
22     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
23         this.applicationContext = applicationContext;
24     }
25 
26 }
27 ---
28 public enum  StrageEnum {
29     DOG(new Dog()),
30     CAT(new Cat());
31 
32     private Animal animal;
33 
34     StrageEnum(Animal animal) {
35 
36         this.animal = animal;
37     }
38 
39     public Animal getAnimal() {
40         return animal;
41     }
42 
43 
44 }
45 
46 ----
47 public static void main(String[] args) {
48         StrageEnum.valueOf("CAT").getAnimal().bark();
49     }
原文地址:https://www.cnblogs.com/isnotnull/p/14177648.html