博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
策略模式
阅读量:2256 次
发布时间:2019-05-09

本文共 1342 字,大约阅读时间需要 4 分钟。

策略模式

  例如,在该模式中定义一系列算法,对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

  在策略模式中分为一下几个部分:抽象策略类、具体策略类、环境类

1. 抽象策略类

   定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现

package com.wx.demo01;//抽象策略类public interface Strategy {    //策略方法    public void strategyMethod();}

2. 具体策略类

     实现了抽象策略定义的接口,提供具体的算法实现。

package com.wx.demo01;//具体策略Apublic class ConcreteStrategyA implements Strategy {    public void strategyMethod() {        System.out.println("具体策略A的策略方法被访问");    }}
package com.wx.demo01;//具体策略类Bpublic class ConcreteStrategyB implements Strategy {    public void strategyMethod() {        System.out.println("具体策略B的策略方法被访问");    }}

 

3. 环境类

    持有一个策略类的引用,最终给客户端调用。

package com.wx.demo01;public class Context {    private Strategy strategy;    public Strategy getStrategy() {        return strategy;    }    public void setStrategy(Strategy strategy) {        this.strategy = strategy;    }    public void strategyMethod(){        strategy.strategyMethod();    }}

4. 测试类

package com.wx.demo01;public class StrategyPattern {    public static void main(String[] args) {        Context c= new Context();        Strategy s= new ConcreteStrategyA();        c.setStrategy(s);        c.strategyMethod();        System.out.println("-----------------");        s=new ConcreteStrategyB();        c.setStrategy(s);        c.strategyMethod();    }}

5. 测试结果

                                                       

转载地址:http://ysrdb.baihongyu.com/

你可能感兴趣的文章
Unicode和UTF-8之间的关系
查看>>
java堆和内存的区别,哪个更快?
查看>>
ImportError: pycurl: libcurl link-time ssl backend (openssl)
查看>>
error: editline/readline.h: No such file or directory
查看>>
Android-分析并优化首页启动时间
查看>>
Handler导致内存泄露分析
查看>>
linux下ssh安装与scp命令使用详解
查看>>
一个监控网卡流量的shell脚本
查看>>
Android漏洞挖掘工具收集与整理
查看>>
arm编译环境搭建详解
查看>>
十个Linux的网络监控命令
查看>>
android指纹识别源码
查看>>
android开发之agera的使用
查看>>
java学习教程之Reference详解
查看>>
乐pro3(lex720)评测
查看>>
java中获取当前服务器的Ip地址的方法
查看>>
ubuntu下修改webstorm菜单的字体
查看>>
virtualbox中的linux共享文件的步骤
查看>>
2019年,BAT大厂Android 高级面试题及答案
查看>>
Android 原生绘制
查看>>