您的位置:首页 > 健康 > 养生 > 高端设计网站平台_舟山论坛网_浙江疫情最新消息_合肥seo优化排名公司

高端设计网站平台_舟山论坛网_浙江疫情最新消息_合肥seo优化排名公司

2024/10/8 20:37:00 来源:https://blog.csdn.net/m0_45164511/article/details/142723457  浏览:    关键词:高端设计网站平台_舟山论坛网_浙江疫情最新消息_合肥seo优化排名公司
高端设计网站平台_舟山论坛网_浙江疫情最新消息_合肥seo优化排名公司

策略模式的主要角色如下:

  1. 抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
  2. 具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现或行为。
  3. 环境或上下文(Context)类:是使用算法的角色, 持有一个策略类的引用,最终给客户端调用。

接口Strategy

package com.cocoa.strategy;/*** 抽象策略类**/
public interface Strategy {void algorithm();
}

类StrategyA 

package com.cocoa.strategy;public class StrategyA implements Strategy {@Overridepublic void algorithm() {System.out.println("执行策略A");}
}

类StrategyB 

package com.cocoa.strategy;public class StrategyB implements Strategy {@Overridepublic void algorithm() {System.out.println("执行策略B");}
}

类StrategyFactory/Context(策略工厂)

package com.cocoa.strategy;/*** 环境类**/
public class StrategyFactory {// 维持一个对抽象策略类的引用private Strategy strategy;public StrategyFactory(Strategy strategy) {this.strategy = strategy;}// 调用策略类中的算法public void algorithm(){strategy.algorithm();}
}

测试类Main

package com.cocoa.strategy;public class Main {public static void main(String[] args) {Strategy strategyA  = new StrategyA();StrategyFactory context = new StrategyFactory(strategyA); //可以在运行时指定类型,通过配置文件 + 反射机制实现context.algorithm();// 执行相应策略}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com