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

无锡网站建设 app 微信金山办公给我发验证码

无锡网站建设 app 微信,金山办公给我发验证码,做视频解析网站播放器和接口,杭州 手机网站作为一名程序员,你一定遇到或亲自写过这样的代码。有人将它形象的形容为shi山,或者被戏称为“面向保就业编程”。 以下面这个代码为例,其中的问题也显而易见,当越来越多的条件判断时,代码会变得非常臃肿,难…

作为一名程序员,你一定遇到或亲自写过这样的代码。有人将它形象的形容为shi山,或者被戏称为“面向保就业编程”。

image-20240109224714584

以下面这个代码为例,其中的问题也显而易见,当越来越多的条件判断时,代码会变得非常臃肿,难以维护。

    String mediaType = "blogger";if ("lxf".equals(mediaType)) {System.out.println("廖雪峰");} else if ("JavaPub".equals(mediaType)) {System.out.println("知名博主");} else if ("msb".equals(mediaType)) {System.out.println("马士兵");}...

image-20240109224734174

解决

怎么办呢?

首先想到的一定是使用三目运算符,但是问题也显而易见,不能处理过多的情况。

    int price = condition?80:100;

还有什么办法呢,枚举定义、合并查询条件、java8 新特性 Optional 等等,但是这些方法都治标不治本。当判断多了起来,还是会变得臃肿。

策略模式

接下来就讲一下今天的推荐方案,策略模式。

你一定不要排斥这种设计模式,简单来看其实很简单。

策略模式是一种行为设计模式,它允许你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。这句话可能有点绕,我们来看一个具体的例子。

首先,我们把每个条件逻辑代码块,抽象成一个公共的接口,可以得到以下代码:

    // 获取博主信息接口public interface IMediaService {void showMedia();}

我们根据每个逻辑条件,定义相对应的策略实现类,可得以下代码:

    // LXF策略实现类public class LXFMediaServiceImpl implements IMediaService {@Overridepublic void showMedia() {System.out.println("廖雪峰");}}// JavaPub策略实现类public class JavaPubMediaServiceImpl implements IMediaService {@Overridepublic void showMedia() {System.out.println("知名博主");}}// MSB策略实现类public class MSBMediaServiceImpl implements IMediaService {@Overridepublic void showMedia() {System.out.println("马士兵");}}

接下来,我们再定义策略工厂类,用来管理这些博主信息实现策略类,如下:

    // 博主信息服务工产类public class MediaServicesFactory {private static final Map<String, IMediaService> map = new HashMap<>();static {map.put("lxf", new LXFMediaServiceImpl());map.put("JavaPub", new JavaPubMediaServiceImpl());map.put("msb", new MSBMediaServiceImpl());}public static IMediaService getMediaService(String mediaType) {return map.get(mediaType);}}

使用了策略+工厂模式之后,代码变得简洁多了,如下:

    public class Test {public static void main(String[] args) {String mediaType = "JavaPub";IMediaService mediaService = MediaServicesFactory.getMediaService(mediaType);mediaService.showMedia();}}

看到这里,是不是很简单。

这样的好处也显而易见,就是可以灵活的切换不同的博主信息,比如:

  • 我想看JavaPub的信息,只需要将mediaType设置为JavaPub即可。
  • 我想看马士兵的信息,只需要将mediaType设置为msb即可。
http://www.yayakq.cn/news/571290/

相关文章:

  • wordpress全站cdn教程做网站广告多少钱
  • 网站点赞功能手机网站 侧边栏导航
  • 免费做封面的网站湖南网站制作团队
  • 香洲区建设局网站信息流广告代运营
  • php个人网站源码带音乐网络公司的经营范围有哪些
  • 句容市网站seo优化排名网站 微信维护怎么做
  • 福建省建设干部网站wordpress页面和文章
  • 做网站怎么建文件夹在线做ppt的网站有哪些
  • 广州做营销网站公司学校网站结构图
  • 注册一个做网站的公司代理网站平台
  • 2017做哪些网站能致富乐清网络平台
  • 东营专业网站建设公司排行济南定机票网站建设
  • 网站做支付接口吗产品开发流程8个步骤案例
  • 企业做网站好吗数据库电影网站源码
  • 网站的相关性 实用性网站开发综合实训总结
  • html5手机网站调用微信分享英文网站怎么设置中文
  • 湖南做网站 找磐石网络一流公司需要网站 该怎么做
  • 湘潭学校网站建设 磐石网络第一室内设计用什么软件比较好
  • 苏州网站建设推广服务柯桥建设集团网站
  • 宁夏建设局网站衡阳县做淘宝网站建设
  • 网站改版 降权汝州建设局网站
  • 网站可以做动态背景吗wordpress 加入地图
  • 移动端网站开发与网页开发区别什么是网络营销的漏斗原理
  • php网站开发工程师找工作广州网站推广排名
  • 网站设计制作策划wordpress去掉自豪
  • 做电商网站电商公司WordPress 简单的问答
  • 网站模块删除品牌建设网站
  • 网络架构方案书周口网站优化
  • 建设企业网站注意事项wordpress商城多重分类
  • 银川市建设诚信平台网站下载中国移动app免费下载安装