博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式(三)策略模式
阅读量:5794 次
发布时间:2019-06-18

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

概念:

  其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能。

组成:

1.抽象策略角色

  这个是一个抽象的角色,通常情况下使用接口或者抽象类去实现。对比来说,就是我们的Comparator接口。

2.具体策略角色

  包装了具体的算法和行为。对比来说,就是实现了Comparator接口的实现一组实现类。

3.环境角色

  内部会持有一个抽象角色的引用,给客户端调用。对比来说,就是我们的TreeSet类。说明:TreeSet内部一定会有一个策略类的一个成员变量,这样做的目的在于可以当我们在去创建TreeSet对象的时候,可以接收我们向TreeSet类中传递的具体的策略类。

案例:

实现一个加减乘除的功能。

1、定义抽象策略角色

2、定义具体策略角色(本例子仅仅演示,只是定义加、减两种具体策略)

加法策略:

减法策略:

 

 

3、环境角色

 

4、测试类

 

 

转载于:https://www.cnblogs.com/ganchuanpu/p/6799451.html

你可能感兴趣的文章
图片变形的抗锯齿处理方法
查看>>
Effective C++ Item 32 确保你的 public 继承模子里出来 is-a 关联
查看>>
phpstorm安装laravel-ide-helper实现自动完成、代码提示和跟踪
查看>>
python udp编程实例
查看>>
TortoiseSVN中图标的含义
查看>>
Tasks and Back stack 详解
查看>>
成功的背后!(给所有IT人)
查看>>
在SpringMVC利用MockMvc进行单元测试
查看>>
Nagios监控生产环境redis群集服务战
查看>>
Angular - -ngKeydown/ngKeypress/ngKeyup 键盘事件和鼠标事件
查看>>
Java利用httpasyncclient进行异步HTTP请求
查看>>
Python version 2.7 required, which was not foun...
查看>>
context:annotation-config vs component-scan
查看>>
经典sql
查看>>
java四种线程池简介,使用
查看>>
ios View之间的切换 屏幕旋转
查看>>
typedef BOOL(WINAPI *MYFUNC) (HWND,COLORREF,BYTE,DWORD);语句的理解
查看>>
jsp 特殊标签
查看>>
[BZOJ] 1012 [JSOI2008]最大数maxnumber
查看>>
gauss消元
查看>>