设计模式----策略模式通俗实例
程序员文章站
2022-06-20 08:42:36
在Spring里,策略模式,加载资源文件的方式,使用了不同的方法,比如:ClassPathResourece,FileSystemResource,ServletContextResource,UrlResource但他们都有共同的借口Resource;在Aop的实现中,采用了两种不同的方式,JDK ......
在Spring里,策略模式,加载资源文件的方式,使用了不同的方法,比如:ClassPathResourece,FileSystemResource,ServletContextResource,UrlResource但他们都有共同的借口Resource;在Aop的实现中,采用了两种不同的方式,JDK动态代理和CGLIB代理
锻炼身体,你可以选择跑步、游泳、举重,于是就有了三个策略可以选择了
锻炼方式策略的接口
package com.ij34.stategy; /* 策略模式接口 */ public interface StrategyPattern { /* 锻炼方式的方法 */ public void exercise(); }
三种锻炼方式
1.
package com.ij34.stategy; /* 实现跑步锻炼方法 */ public class run implements StrategyPattern { @Override public void exercise() { System.out.println("我正在通过跑步来锻炼身体"); } }
2.
package com.ij34.stategy; /* 实现游泳锻炼方法 */ public class swim implements StrategyPattern { @Override public void exercise() { System.out.println("我正在通过游泳来锻炼身体"); } }
3.
package com.ij34.stategy; /* 实现举重锻炼方法 */ public class lift implements StrategyPattern { @Override public void exercise() { System.out.println("我正在通过举重来锻炼身体"); } }
为用户选择锻炼方式的Context类
package com.ij34.stategy; /* 通过该类为用户提供自己喜爱的锻炼方式 */ public class exerciseContext { private StrategyPattern sp; public exerciseContext(StrategyPattern sp){ this.sp=sp; } public void exercise(){ sp.exercise(); } }
测试类
package com.ij34.stategy; public class Test { /* 张三喜欢跑步,通过跑步来锻炼 */ public static void main(String[] args) { exerciseContext zhangsan=new exerciseContext(new run()); zhangsan.exercise(); } }
测试结果