phpcms做网站感想关于网站开发的学校
phpcms做网站感想,关于网站开发的学校,潍坊中小型网站建设公司,企业网站建站之星策略模式
策略模式主要分为三部分#xff1a;
抽象策略类AbstractStrategy#xff1a;负责定义抽象方法#xff0c;具体策略类的继承具体策略类ContentStrategy#xff1a;负责策略类的具体实现上下文类#xff1a;ContextStrategy#xff1a;负责上游模块的调用。包含…策略模式
策略模式主要分为三部分
抽象策略类AbstractStrategy负责定义抽象方法具体策略类的继承具体策略类ContentStrategy负责策略类的具体实现上下文类ContextStrategy负责上游模块的调用。包含一个策略属性一个调用方法
策略模式实现
抽象策略类
public Abstract class Animal{public abstract Object eat();
}具体策略类
可以有多个具体策略类
public class Cat extends Animal{Overridepublic Object eat(){System.out.println(猫吃鱼);}
}上下文类
public class Context{private Animal animal;public Context(String animalType){if(animalType.equals(cat){this.animalnew Cat();}else if(){}}public Object invoke(){return animal.eat();}
}
使用
public static void main(String[] args) {Context contextnew Context(cat);context.invoke();
}SpringBoot中应用
SpringBoot中我们的具体策略类一般会通过Autowired注入其他Bean来调用。这个时候使用上面的就无法使用了。我们要根据Spring的Bean特性获取Bean来实现
Service
public class ContextUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {ContextUtil.applicationContext applicationContext;}public static T T getBean(ClassT clazz) {return applicationContext.getBean(clazz);}public static Object getBean(String name) {return applicationContext.getBean(name);}public static T T getBean(String name, ClassT clazz) {return applicationContext.getBean(name, clazz);}} 2. Context上下文通过枚举类switch实现获取具体Beanpublic enum Enum02 {SPRING(cat, cat), SUMMER(dog, dog);private String code;private String beanName;Enum02(String code, String beanName) {this.beanName beanName;this.code code;}public String getBeanName() {return beanName;}public int getCode() {return code;}public static Enum02 getEnum(String code) {Enum02[] enums Enum02.values();for (Enum02 enu : enums) {if (enu.getCode().equals(code)) {return enu;}}return null;}
}上下文使用
public class Context{private Animal animal;public Context(String animalType){Enum02 enum Enum02.getEnum(animalType);switch(animalType){case cat:this.animalContextUtil.getBean(enum.beanName);break;}}public Object invoke(){return animal.eat();}
}使用时只需要new Context传入参数即可
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90286.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!