专业建站的网站,广东全网推广营销哪家好,网站怎么推广效果好一点呢,百度云wordpress教程视频教程文章目录 一、策略模式定义二、例子1. 菜鸟教程例子#xff08;略有改动#xff09;1.1 、定义。1.2、定义加法策略类1.3、定义乘法策略类1.4、创建 Context 类1.5、使用 2、JDK awt包——BufferStrategy3、Spring源码 —— InstantiatorStrategy4、Spring源码 —— Instanti… 文章目录 一、策略模式定义二、例子1. 菜鸟教程例子略有改动1.1 、定义。1.2、定义加法策略类1.3、定义乘法策略类1.4、创建 Context 类1.5、使用 2、JDK awt包——BufferStrategy3、Spring源码 —— InstantiatorStrategy4、Spring源码 —— InstantiationStrategy5、SpringMVC源码—— AbstractMappingContentNegotiationStrategy策略实现类 三、其他设计模式 一、策略模式定义
类型行为型模式 目的在策略模式定义了一系列算法或策略并将每个算法封装在独立的类中使得它们可以互相替换。 二、例子
1. 菜鸟教程例子略有改动
菜鸟的例子是加减乘除的例子。 将加减乘除分别封装成策略类。
1.1 、定义。
public interface Strategy {public int calc(int num1, int num2);
}1.2、定义加法策略类
public class AddtionStrategy implements Strategy{Overridepublic int calc(int num1, int num2) {return num1 num2;}
}1.3、定义乘法策略类
public class MultiplyStrategy implements Strategy{Overridepublic int calc(int num1, int num2) {return num1 * num2;}
}1.4、创建 Context 类
public class Context {private Strategy strategy;public Context(Strategy strategy){this.strategy strategy;}public int executeStrategy(int num1, int num2){return strategy.calc(num1, num2);}
}1.5、使用
public class StrategyPatternDemo {public static void main(String[] args) {Context context new Context(new AddtionStrategy()); System.out.println(10 5 context.executeStrategy(10, 5));}
}2、JDK awt包——BufferStrategy
BufferStrategy类提供了一种在图形界面中进行双缓冲的方法。 策略实现类
BltBufferStrategyBltSubRegionBufferStrategyFlipBufferStrategyFlipSubRegionBufferStrategySingleBufferStrategy 3、Spring源码 —— InstantiatorStrategy
包org.springframework.objenesis.strategy.InstantiatorStrategy 是一个创建实例的策略接口它定义了一组规则和算法用于选择实例化对象的方式。 InstantiatorStrategy 可以根据对象类型、构造函数参数等条件利用反射机制或其他方式创建对象实例。 InstantiatorStrategy 通常作为工厂类的一部分被用于创建不同类型的对象实例。 策略实现类
StdInstantiatorStrategy 用于创建对象实例的一种策略类通过反射来实现对象的创建并提供了缓存机制来提高对象创建的效率。SingleInstantiatorStrategy 实现创建单例 策略类。SerializingInstantiatorStrategy 序列化创建实例 策略类。 4、Spring源码 —— InstantiationStrategy
包org.springframework.beans.factory.support.InstantiationStrategy InstantiationStrategy 是一个创建对象实例的默认策略它定义了一个默认的实例化方式可以根据一个 Class 对象创建对象实例。 InstantiationStrategy 常用于在反射调用时通过默认的无参构造函数实例化一个对象或者通过参数列表实例化一个对象。 在一些框架或工具中InstantiationStrategy 可以被自定义或扩展以满足不同的实例化需求。 策略实现类
SimpleInstantiationStrategy 简单创建实例。CglibSubclassingInstantiationStrategy 使用cglib创建实例。 5、SpringMVC源码—— AbstractMappingContentNegotiationStrategy
提供的一种用于 HTTP 内容协商的策略类。具体来说它是 ContentNegotiationStrategy 接口的一个抽象实现用于实现基于请求 URL 或文件扩展名的内容调解。 通过配置对于不同请求 URL 或文件扩展名所对应的媒体类型AbstractMappingContentNegotiationStrategy 可以在处理 HTTP 请求时自动选择最合适的内容格式返回给客户端。
策略实现类
ParameterContentNegotiationStrategy
public class ParameterContentNegotiationStrategy extends AbstractMappingContentNegotiationStrategy {...}PathExtensionContentNegotiationStrategy
Deprecated
public class PathExtensionContentNegotiationStrategy extends AbstractMappingContentNegotiationStrategy {...}ServletPathExtensionContentNegotiationStrategy
Deprecated
public class ServletPathExtensionContentNegotiationStrategy extends PathExtensionContentNegotiationStrategy {...}三、其他设计模式
创建型模式 结构型模式
1、设计模式——装饰器模式Decorator Pattern Spring相关源码
行为型模式
1、设计模式——访问者模式Visitor Pattern Spring相关源码2、设计模式——中介者模式Mediator Pattern JDK相关源码