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

wix做中文网站怎么样电商直播系统

wix做中文网站怎么样,电商直播系统,宁波seo怎么做引流推广,商业设计方案策略模式 描述基本使用使用传统策略模式的缺陷以及规避方法 枚举策略描述基本使用使用 描述 定义一组策略,并将其封装起来到一个策略上下文中。 由调用者决定应该使用哪种策略,并且可以动态替换 基本使用 定义策略接口 public interface IStrategy {…

策略模式

  • 描述
    • 基本使用
    • 使用
    • 传统策略模式的缺陷以及规避方法
  • 枚举策略
    • 描述
    • 基本使用
    • 使用

描述

定义一组策略,并将其封装起来到一个策略上下文中。
由调用者决定应该使用哪种策略,并且可以动态替换

基本使用

  • 定义策略接口
public interface IStrategy {void action();
}
  • 声明具体策略类
public class StrategyA implements IStrategy {@Overridepublic void action() {System.out.println("策略A.....");}
}public class StrategyB implements IStrategy {@Overridepublic void action() {System.out.println("策略B.....");}
}
  • 定义策略上下文(调用方通过上下文发起策略调用)
public class StrategyContext {private IStrategy strategy;public StrategyContext(IStrategy strategy) {this.strategy = strategy;}public void setStrategy(IStrategy strategy) {this.strategy = strategy;}public void doAction() {strategy.action();}
}

使用

调用方选择一个策略,并创建策略上下文 发起调用

public class Sample {public static void main(String[] args) {IStrategy strategyA = new StrategyA();// 初始化时持有策略AStrategyContext context = new StrategyContext(strategyA);context.doAction();System.out.println("===== 替换策略 ====");// 动态替换为策略BIStrategy strategyB = new StrategyB();context.setStrategy(strategyB);context.doAction();}
}

传统策略模式的缺陷以及规避方法

和工厂模式中子工厂数量过多的问题一致。当策略数量变多时,会对调用方不够友好,调用方并不想了解具体策略的实现

我们可以参考工厂模式的处理方式:引入一个协调类对所有策略进行管理

  • 定义一个协调类(将所有策略管理起来,具体方案多种多样)
public final class StrategyFactory {private static Map<String, IStrategy> strategyMap = new HashMap<>();static {strategyMap.put("A", new StrategyA());strategyMap.put("B", new StrategyB());}public static IStrategy getInstance(String code) {return strategyMap.get(code);}
}
  • 具体策略的选择放到策略上下文中,根据调用方传入的标识选择对应的策略
public class StrategyContextV2 {private IStrategy strategy;public StrategyContextV2(String code) {this.strategy = StrategyFactory.getInstance(code);}public void setStrategy(String code) {this.strategy = StrategyFactory.getInstance(code);}public void doAction() {strategy.action();}
}
  • 使用(调用方只需传入策略标识,可以调用对应策略。调用方对具体策略无感知)
public class SampleV2 {public static void main(String[] args) {StrategyContextV2 contextV2 = new StrategyContextV2("A");contextV2.doAction();System.out.println("===== 替换策略 ====");contextV2.setStrategy("B");contextV2.doAction();}
}

枚举策略

描述

基于以上传统策略中使用协调类来规避具体策略对调用方的影响考虑。

总的来说,这就是一种表驱动的思想。将一些控制逻辑抽离为一些特定的数据结构(不限于数组字典外部配置文件等等)

Java中的枚举就是一种自带表驱动属性的数据类型

基本使用

  • 定义策略枚举
public enum StrategyEnum {A("A策略") {@Overridepublic void action() {System.out.println("调用策略A.....");}},B("B策略") {@Overridepublic void action() {System.out.println("调用策略B.....");}},;/*** 策略描述*/private final String desc;StrategyEnum(String desc) {this.desc = desc;}public abstract void action();
}
  • 定义策略枚举上下文
public class StrategyContext {public static void doAction(String code) {StrategyEnum.valueOf(code).action();}
}

使用

同样只需传入策略标识即可

public class Sample {public static void main(String[] args) {StrategyContext.doAction("A");StrategyContext.doAction("B");}
}

可以看到,使用枚举实现似乎更加简单


文章转载自:

http://oLDwgzAT.pqsys.cn
http://nIQEkkA0.pqsys.cn
http://XDBKkVzh.pqsys.cn
http://AHJNmssD.pqsys.cn
http://rVMJvZ3S.pqsys.cn
http://LpibIz3o.pqsys.cn
http://ndtkSjsk.pqsys.cn
http://RzaA3Tp1.pqsys.cn
http://2wizzUZl.pqsys.cn
http://MXF7x0gU.pqsys.cn
http://U09t75w7.pqsys.cn
http://Y9lDaiQC.pqsys.cn
http://xf7ECZ0R.pqsys.cn
http://5qVvTGQv.pqsys.cn
http://8DIka1Z9.pqsys.cn
http://9lAgTEsq.pqsys.cn
http://XwAscn9E.pqsys.cn
http://pzuTzOb4.pqsys.cn
http://7s4PRjLV.pqsys.cn
http://bNaFWD4J.pqsys.cn
http://SlC5EeAF.pqsys.cn
http://YGyI27p3.pqsys.cn
http://PQnyqGL6.pqsys.cn
http://lwmL5jFV.pqsys.cn
http://Uznt1p4R.pqsys.cn
http://kGkZh26p.pqsys.cn
http://Z8ngYZ76.pqsys.cn
http://lVscOf5c.pqsys.cn
http://dfIhEAXK.pqsys.cn
http://cm5nJ5L4.pqsys.cn
http://www.dtcms.com/wzjs/670287.html

相关文章:

  • 商务网站的建设长沙app制作公司哪家好
  • 免费软件下载官网宁波seo关键词优化案例
  • 餐饮 网站模板html5网站模板 站长网
  • 网站开发毕设ppt做视频网站都需要什么软件
  • 中国网站排名网官网接订单去哪个网站
  • wordpress动态页面徐州网站的优化
  • 订房网站开发租房子58同城
  • 搭建网站分类网站点
  • 如何做p2p网站android软件开发用什么工具
  • 餐饮行业网站建设风格上海建设学校网站
  • 我的网站dede广州冼村为什么有钱
  • 深圳网站建设公司那家好网站建设哪家最好用
  • 为什么要建设双端网站荆门城乡建设局网站
  • 青浦建设网站公司固原市住房和城乡建设厅网站
  • 本地的唐山网站建设时光捕手 wordpress
  • 网站建设怎么放到云空间wordpress 拼音别名
  • 网站制作免费网站建设套餐128000
  • 电脑手机自适应网站的建设wordpress插件ftp
  • 广东手机网站制作公司资阳建设网站
  • 采购网站官网网店美工课程总结
  • 服装企业网站策划书网站备案通过后
  • wordpress建站实例视频聊城seo培训
  • 博物馆网站微信公众号建设河北建设网网站
  • 深圳英文网站建设去哪家asp iis设置网站路径
  • 小说网站制作公司企业网站博客上如何营销
  • 如何提高网站的安全性广州公司注册需要什么条件
  • 网站建设要学多久新河网房屋信息
  • 昆山企业网站建设做网站推广常识题库及答案
  • 中山网站推广词wordpress获取文章简介
  • 自己做的网站百度收索不到传媒大学附近网站建设公司