当前位置: 首页 > news >正文

泰安房产网签成交数据武汉本地seo

泰安房产网签成交数据,武汉本地seo,珠海网站开发,华强北做电子网站建设策略模式就是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 基本概念 策略模式主要是解决多种算法相似的情况下,使用if...else所带来的复杂和难以维护。当存在系统中有多个类,但是区分它们的是只是它们的直接行为,那我们…

策略模式就是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

基本概念

策略模式主要是解决多种算法相似的情况下,使用if...else所带来的复杂和难以维护。当存在系统中有多个类,但是区分它们的是只是它们的直接行为,那我们可以把这些封装成一个一个类,然后进行任意替换。

策略模式存在三种角色:

  • Strategy 策略(算法)抽象
  • ConcreteStrategy 各种策略(算法)的具体实现
  • Context 策略的外部封装类,或者说策略的容器类。根据不同策略执行不同的行为。策略由外部环境决定。

案例

抽象类

public interface Strategy {public void encrypt();
}

定义算法抽象类,方法为加密。

具体实现类

AES加密

public class AESStrategy implements Strategy{@Overridepublic void encrypt() {System.out.println("执行AES");}}

MD5加密

public class MD5Strategy implements Strategy {@Overridepublic void encrypt() {System.out.println("执行MD5");}
}

继承算法抽象类,具体用AES、MD5方法进行实现。

外部环境封装类

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

测试类

public class MainTest {public static void main(String[] args) {Context context = new Context(new AESStrategy());context.encrypt();}
}

小改一下

上面测试使用的时候,需要自己新建一个实例,阅读性不够好,所以就重新用枚举类修改一下。

算法枚举类

public enum StrategyEnums {MD5("MD5算法"){@Overridepublic Class<?> getStrategyClass() {return MD5Strategy.class;}},AES("AES算法"){@Overridepublic Class<?> getStrategyClass() {return AESStrategy.class;}	};public abstract Class<?> getStrategyClass();private String className;StrategyEnums(){}StrategyEnums(String className){this.className= className;}public String getClassName(){return className;}
}

枚举方法返回算法具体实现类的Class,并加上类的算法描述。

public class Context {private Strategy strategy;public Context(StrategyEnums enums) {try {this.strategy = (Strategy) enums.getStrategyClass().newInstance();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}public void encrypt(){this.strategy.encrypt();}
}

包装类的参数改为枚举值,根据枚举值来构建实例。

public class MainTest {public static void main(String[] args) {Context context = new Context(StrategyEnums.AES);context.encrypt();}
}

测试可用,但是这样的话,就是需要同时维护枚举类,新构建一个算法具体类,同时要维护枚举类,不过就是增加了可读性。

总结

使用策略方式可以提供良好的扩展性、避免大量的if...else的条件判断,算法可以自由切换。当遇到多个类似的算法策略,可以考虑策略模式。

http://www.tj-hxxt.cn/news/106662.html

相关文章:

  • 温州建设诚信网站seo内部优化方式包括
  • 九江市做网站的公司seo网站推广优化就找微源优化
  • 电子商务网站建设的目标是什么意思搜索引擎入口网址
  • 怎么做淘客的网站推广产品的方式有哪些
  • 做英文企业网站市场营销活动策划方案
  • 用身份证备案网站百度地图下载2022新版安装
  • 企业网上年检在网站怎么做郑州网站建设方案
  • 天眼企业查询系统官网seo外包费用
  • 网站做推广页需要什么软件下载seo优化推广业务员招聘
  • 网站怎么登陆后台百度竞价最低点击一次多少钱
  • 江西网站设计电话电商网站如何避免客户信息泄露
  • 中国域名门户网站广州百度网站推广
  • 哈尔滨网站建设唯辛ls15227南宁seo费用服务
  • 苏州网站建设学费中国突然宣布一重磅消息
  • 新网站先做外链还是内容五种网络营销推广方法
  • 哪里有好的网站代理推广
  • wordpress编辑器字体大小seo搜索引擎官网
  • 织梦播放器网站网络营销推广主要做什么
  • 北京免费模板建站五年级上册优化设计答案
  • 网站为什么被挂马软文发稿公司
  • 个人网站建立平台网站定制
  • 如何介绍设计的网站模板下载百度pc版网页
  • 用dw做网站图片的基本尺寸百度网站排名优化价格
  • layui做网站网店如何引流与推广
  • 扬州 网站建设品牌建设的五个要素
  • 网站的结构与布局优化设计网站维护收费标准
  • 网站建设技术支持有什么竞价运营是做什么的
  • 网页网站怎么做网站维护一年一般多少钱?
  • 广州海珠区二手房房价菏泽地网站seo
  • 优秀购物网站建设广州网站营销推广