工厂模式+策略模式的使用

2023-11-15

项目中会有这样的情形,通过某个参数进入不同的if分支,但是if分支太多就会导致项目难以维护,可读性也会降低,如下情形:

public class Test {
    public static void main(String[] args) {
        String ani = "pig";
        if(ani.equals("cat")){
            showCat();
        }else if(ani.equals("dog")){
            showDog();
        }
        
    }

    private static void showCat() {
        System.out.println("this is cat!");
    }

    private static void showDog() {
        System.out.println("this is dog!");
    }
}

上面情况为了方便只写了两个if的情况,假设if有十个,这时候是时候引入策略模式了

public interface Operate {
    void show();
}

不同的分支实现该策略接口

public class CatShow implements Operate {
    @Override
    public void show() {
        System.out.println("this is cat!");
    }
}
public class DogShow implements Oper
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工厂模式+策略模式的使用 的相关文章

随机推荐

  • Xss练习(level11/12/13/16/17/18)

    本文为学习笔记 仅限学习交流 不得利用 从事危害国家或人民安全 荣誉和利益等活动 level11 查看源代码 尝试 利用BP抓包 改包 构造语句 注意闭合 level12 尝试BP抓包 改包 type test nclick alert 1
  • vue中style设置scoped后部分样式不生效

    因为用了elementUI的组件库 一个页面用到了el dialog 需要改一下样式 但
  • UDP用户数据报协议分析

    简介 UDP User Datagram Protocol 即用户数据报协议 在网络中它与TCP协议一样用于处理数据包 是一种无连接的协议 在OSI模型中 在第四层 传输层 处于IP协议的上一层 UDP用来支持那些需要在计算机之间传输数据的
  • vue通过uniapp打包运行页面空白(Failed to load resource)

    vue调试时候 真机打开url和mac电脑打开都正常 然后npm run build 在移植到uniapp项目里打包apk ipa传到手机运行页面空白 打开safari浏览器 查看ipa文件包的页面 发现报了Failed to load r
  • 【重磅整理】180篇NIPS-2020顶会《强化学习领域》Accept论文大全

    深度强化学习实验室 作者 DeepRL Lab AMiner cn 联合发布 来源 https neurips cc Conferences 2020 编辑 DeepRL 图片来自新智元 NeurIPS终于放榜 提交数再次创新高 与去年相比
  • Linux-C基础之输入输出函数

    一 输出 一 数据输出 C语言无I O语句 I O操作由函数实现 include
  • 搭建个人的第一个服务器以及域名申请和绑定--阿里云服务器

    在大学阶段 购买并搭建了自己的第一个服务器 心情激动无比 写下本片博文记录购买并搭建服务器的全过程 方便自己以后在服务器方面进行更加深入的学习 阿里云和腾讯的服务器都有学生价 价格都是一折左右 真心实惠 本人因为学习的Java 所以偏向于阿
  • 12.荔枝派 zero(全志V3S)-使用新版本的buildroot

    上面是我的微信和QQ群 欢迎新朋友的加入 1 下载新版buildroot 我下载了19年2月份发布的buildroot 2 文件系统配置 make menuconfig 设置target option 设置编译链 其中Toolchain p
  • nginx实现动静分离

    nginx实现动静分离 1 什么是动静分离 2 nginx反向代理与负载均衡 3 nginx实现负载均衡 4 nginx实现动静分离 1 什么是动静分离 动静分离主要是通过nginx PHP FPM来实现 其中nginx处理图片 html等
  • 89C51七段数码管显示“12345678”

    1 延时模块 void Delay ms unsigned int xms 11 0592MHz延时模块 unsigned char i j while xms nop i 2 j 199 do while j while i 2 显示模块
  • linux + gitee配置教程

    用gitee管理小红迟早50迈的项目 上手教程 1 git安装 sudo apt get update sudo apt get install git 检查一下git版本 看看是否安装成功 git version 2 git配置 下面两行
  • 该用什么软件分割音频?这些软件可以帮助你分割音频

    大家都知道想要制作一个好的视频是需要进行后期各种剪辑的 不仅视频需要后期剪辑 其实音频也是需要剪辑的 比如合并音频 裁剪音频片段 调整音频的速度 分割音频等等 那么这个时候挑选一款合适的音频剪辑软件就很重要了 今天我整理了一些简单好用的音频
  • Strapi之Entity Service API

    Query Engine API 和 Entity Service API 都是 Strapi 平台提供的 API 但是它们的功能和用途有所不同 Entity Service API 主要用于管理实体对象的创建 读取 更新和删除操作 它是对
  • Vue.js学习记录-4-Vue基础:条件渲染 +列表渲染

    4 条件渲染 根据条件进行元素展示 v if v if v else if 2 1 0新增 v else三大指令必须紧贴使用 否则指令将不被识别 指令举例 div This is A div div This is B div div Th
  • P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib【普及】

    USACO1 5 特殊的质数肋骨 Superprime Rib 题目描述 农民约翰的母牛总是产生最好的肋骨 你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们 农民约翰确定他卖给买方的是真正的质数肋骨 是因为从右边开始切下肋骨 每次
  • sklearn机器学习:高斯朴素贝叶斯GaussianNB

    认识高斯朴素贝叶斯 class sklearn naive bayes GaussianNB priors None var smoothing 1e 09 如果Xi是连续值 通常Xi的先验概率为高斯分布 也就是正态分布 即在样本类别Ck中
  • 让生活充满快乐

    文章目录 一 效果图以及素材 二 制作步骤 一 效果图以及素材 效果图 素材 二 制作步骤 打开素材 拷贝一份 找到滤镜 camera Raw滤镜 拷贝一份 ctrl t 自由变换 逆时间90度 确定 不透明度调50方便查看效果 多边形工具
  • 处理大并发之四 libevent demo详细分析(对比epoll)

    处理大并发之四 libevent demo详细分析 对比epoll libevent默认情况下是单线程 每个线程有且仅有一个event base 对应一个struct event base结构体 以及赋予其上的事件管理器 用来安排托管给它的
  • html获得url参数

    得到url搜索串 function getURLSearch isParent var strSearch if isParent strSearch window parent location search else strSearch
  • 工厂模式+策略模式的使用

    项目中会有这样的情形 通过某个参数进入不同的if分支 但是if分支太多就会导致项目难以维护 可读性也会降低 如下情形 public class Test public static void main String args String