我是靠谱客的博主 俊秀飞机,最近开发中收集的这篇文章主要介绍行为型-策略模式案例 Comparator: Arrays.sort(T[], Comparator)案例 Spring 后置处理器: applyBeanPostProcessorsBeforeInstantiation案例 spring ApplicationContextAware案例 spring @Enable XXX,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

注入对象,改变行为。
这是一个很有意思的模式,它可以有多种表现形式,只要满足注入对象,改变行为
学习这个模式,必须忘记网上和书上的标准类图。

案例 Comparator: Arrays.sort(T[], Comparator)

注入不同的Comparator,排序的方式也不同。
这是最常见的策略模式的表现形式,没必要画什么图。

案例 Spring 后置处理器: applyBeanPostProcessorsBeforeInstantiation

与上一个策略模式比较,有点主客颠倒的意思。

	protected Object applyBeanPostProcessorsBeforeInstantiation(Class<?> beanClass, String beanName) {
		// 遍历所有的处理器,不同的处理器就是不同的策略
		for (BeanPostProcessor bp : getBeanPostProcessors()) {
			// 但是必须满足以下条件的策略才能被执行,这就叫策略模式。
			// 他动态的选择策略,改变行为。
			if (bp instanceof InstantiationAwareBeanPostProcessor) {
				InstantiationAwareBeanPostProcessor ibp = (InstantiationAwareBeanPostProcessor) bp;
				Object result = ibp.postProcessBeforeInstantiation(beanClass, beanName);
				if (result != null) {
					return result;
				}
			}
		}
		return null;
	}

如果要实现新的策略,只需写个bean,或者动态的决定要不要加载自己写的bean。

案例 spring ApplicationContextAware

通过实现接口,改变类的行为和状态。
这种形式的策略和第一个案例类似。
由Spring负责在运行期间调用setApplicationContext方法,至于调用它干什么,你自己决定。

案例 spring @Enable XXX

通过在 spring 能扫描到的类上加上 @Enable XXX 注解,就会自动导入相应的功能。


大多数书籍和网上的帖子,只有第一种形式的标准类图。对于策略模式,只需要记住一句话:注入对象,改变行为。重点不在注入对象,重点在改变行为,注入对象只不过是改变行为的一种手段,是可以泛化的,可以做扩展解释的,比如之后的案例,虽然也是注入对象了,但并不像第一案例那样直截了当。

最后

以上就是俊秀飞机为你收集整理的行为型-策略模式案例 Comparator: Arrays.sort(T[], Comparator)案例 Spring 后置处理器: applyBeanPostProcessorsBeforeInstantiation案例 spring ApplicationContextAware案例 spring @Enable XXX的全部内容,希望文章能够帮你解决行为型-策略模式案例 Comparator: Arrays.sort(T[], Comparator)案例 Spring 后置处理器: applyBeanPostProcessorsBeforeInstantiation案例 spring ApplicationContextAware案例 spring @Enable XXX所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部