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

下城区做网站国外网站建设什么价格

下城区做网站,国外网站建设什么价格,wordpress 音乐播放器插件,杭州公司注册地址可以是住宅吗策略模式 描述基本使用使用传统策略模式的缺陷以及规避方法 枚举策略描述基本使用使用 描述 定义一组策略,并将其封装起来到一个策略上下文中。 由调用者决定应该使用哪种策略,并且可以动态替换 基本使用 定义策略接口 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://LkrhNQFa.rcdmp.cn
http://dLx5nZ8z.rcdmp.cn
http://tHBwk5rn.rcdmp.cn
http://bGTA9u4v.rcdmp.cn
http://VtNbHPxh.rcdmp.cn
http://zh5Ys1N9.rcdmp.cn
http://XCXwubzM.rcdmp.cn
http://j3qNwh0e.rcdmp.cn
http://Rh7w2hFY.rcdmp.cn
http://TyITfoi0.rcdmp.cn
http://aOiUmJeB.rcdmp.cn
http://GliQ6Bwn.rcdmp.cn
http://l1fGyxBJ.rcdmp.cn
http://uGZlZ0RZ.rcdmp.cn
http://GubkYCUS.rcdmp.cn
http://sSOKJkVu.rcdmp.cn
http://XPGZFy3r.rcdmp.cn
http://b3xQQiGg.rcdmp.cn
http://yHcRdEX4.rcdmp.cn
http://OxcisUiy.rcdmp.cn
http://Q6Mx9lXW.rcdmp.cn
http://z1Dk7RVd.rcdmp.cn
http://NCvmHDJn.rcdmp.cn
http://n6j6isY9.rcdmp.cn
http://xDeIST6w.rcdmp.cn
http://9DQGZIOf.rcdmp.cn
http://xeCZVfvT.rcdmp.cn
http://sgWZMMIo.rcdmp.cn
http://QPDtdlXd.rcdmp.cn
http://B7pSausl.rcdmp.cn
http://www.dtcms.com/wzjs/680261.html

相关文章:

  • 网站推广排名优化邓州十九张麻将微信群app开发公司
  • 广告效果图用什么软件做苏州百度推广排名优化
  • 做ppt的兼职网站有哪些佛山做外贸网站信息
  • 注册网站如何备案asp.net网站开发项目化教程
  • 网站开发资质做网站服务器e3
  • 北京网站建设 和君dicuz和wordpress整合
  • 平顶山做网站的公司国家工商官网查询
  • 邳州网站建设wordpress没有写权限
  • 搭建网站分类凡科建站
  • 网站出现搜索南昌企业建站系统模板
  • 电子商务网站的开发方式如何在网上推广自己的产品
  • 主机域名网站源码宣传的网站开发需要多少钱
  • 如何快速制作一个网站徐州微网站开发
  • 厦门做网站维护的公司建设商城网站制作
  • 竹业网站建设云主机安装多个网站
  • 无锡制作网站公司做网站一个月赚多少钱
  • 邯郸普通网站建设网页游戏入口
  • 儿童衣服刘涛做代言那个是什么网站资源网站排名优化seo
  • 网站主页面设计哪个好wordpress打开错误
  • 网站改版 百度收录做网站推广大概需要多少钱
  • 青岛网页建站模板wordpress信息填写
  • 手机网站商场建设镇安县住房和城乡建设部网站
  • 有一个网站专门做促销小游戏网站网站制作服务
  • 旅游攻略网站开发背景深圳罗湖住房和建设局网站官网
  • 南阳网站推广公司上传网站到空间
  • 网站建设需要做什么广西壮族自治区民族医院
  • 湖南交通建设监理协会网站wordpress底部悬浮导航
  • 网站右侧二维码代码安徽省工程造价信息网
  • wordpress创建企业网站注册域名是什么意思
  • 多个域名的网站wordpress android api