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

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

一、原理

对一系列算法进行封装,并定义一个抽象的接口,通过继承来对算法进行封装和实现,把算法的选择权交给客户端,strategy模式主要用来平滑的处理算法之间的切换。

二、源代码示例

//定义接口,通过该接口选择算法

public interface Strategy {

//加密的方法
public void entcpy();

}

-----------------------

//接口的实现类

public class MDS implements Strategy{

@Override

public void entcpy() {
System.out.println("执行MDS加密");
}

}

//接口的实现类

public class MD5 implements Strategy{

@Override

public void entcpy() {
System.out.println("执行MD5加密");
}

}

---------------------------------------------

//平滑的处理算法的选择

public class Context {

private Strategy strategy;
public Context(Strategy strategy){
this.strategy=strategy;
}
public void entcpy(){
this.strategy.entcpy();
}

-----------------------------------------

//算法的选择权交给客户端

public class MainClass {

public static void main(String[] args) {
// Strategy strate=new MD5();
// strate.entcpy();
// Strategy strate1=new MDS();
// strate1.entcpy();
Context context=new Context(new MD5());
context.entcpy();
}

}

三、优势和劣势

1、优势

(1)提供了管理算法族的办法(接口和实现),策略类的等级结构定义了一个算法或者行为族,通过继承将代码移到父类里面,避免了重复代码。

(2)策罗模式提供了可以替代继承关系的办法,继承使动态改变算法或者行为变得不可能

(3)使用策略模式可以避免使用多重条件转移语句

2、缺点

客户端必须知道所有的策略类,并自行决定使用哪个类。

转载于:https://www.cnblogs.com/lxfbl/p/8892346.html

你可能感兴趣的文章
Tomcat免安装版的环境变量配置以及Eclipse下的Tomcat配置和测试
查看>>
Unity3D性能优化之Draw Call Batching
查看>>
grafana授权公司内部邮箱登录 ldap配置
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
javascript 浏览器类型检测
查看>>
基于easyX的<颜色侵略>小游戏
查看>>
nginx 不带www到www域名的重定向
查看>>
记录:Android中StackOverflow的问题
查看>>
导航,头部,CSS基础
查看>>
[草稿]挂载新硬盘
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
关于mysql中GROUP_CONCAT函数的使用
查看>>
OD使用教程20 - 调试篇20
查看>>
Java虚拟机(JVM)默认字符集详解
查看>>
Java Servlet 过滤器与 springmvc 拦截器的区别?
查看>>
(tmp >> 8) & 0xff;
查看>>
linux命令之ifconfig详细解释
查看>>
NAT地址转换
查看>>
SQL Server执行计划那些事儿(3)——书签查找
查看>>